javascript – 使用“pastefromword”过滤CKEditor 3中的所有粘贴内容

前端之家收集整理的这篇文章主要介绍了javascript – 使用“pastefromword”过滤CKEditor 3中的所有粘贴内容前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
CKEditor是一个很棒的编辑器,pastefromword插件非常好.我想将插件提供的过滤应用于所有粘贴的文本.例如,从单词粘贴时,将删除所有字体和大小.从电子邮件粘贴时不会发生这种情况.

也就是说,我提出了以下解决方案并将其发布在此处以获得一些反馈.我想知道我是否过于复杂,或者是否有更简单的方法.我只是从pastefromword / plugin.js中复制了代码.

通过我的自定义config.js

...
CKEDITOR.config.pasteFromWordCleanupFile = '/pastefromword.js';
...
CKEDITOR.on( 'instanceReady',function( ev ) {
    /**
     * Paste event to apply Paste From Word filtering on all text.
     *
     * The pastefromword plugin will only process text that has tell-tale signs
     * it is from Word. Use this hook to treat all pasted text as if
     * it is coming from Word.
     *
     * This method is a slightly modified version of code found in
     * plugins/pastefromword/plugin.js
     */
    ev.editor.on( 'paste',function( evt ) {    
        var data = evt.data,editor = evt.editor,content;

        /**
         * "pasteFromWordHappened" is a custom property set in custom
         * pastefromword.js,so that filtering does not happen twice for content
         * actually coming from Word. It's a dirty hack I know.
         */
        if( editor.pasteFromWordHappened ) {
            // Reset property and exit paste event
            editor.pasteFromWordHappened = 0;
            return;
        }

        var loadRules = function( callback ) {
            var isLoaded = CKEDITOR.cleanWord;

            if( isLoaded ) {
                callback();
            }
            else {
                CKEDITOR.scriptLoader.load( CKEDITOR.config.pasteFromWordCleanupFile,callback,null,false,true );
            }

            return !isLoaded;
        };

        content = data['html'];

        // No need to filter text if html tags are not presence,so perform a regex
        // to test for html tags.
        if( content && (/<[^<]+?>/).test(content) ) {
            var isLazyLoad = loadRules( function(){
                if( isLazyLoad ) {
                    editor.fire('paste',data);
                }
                else {
                    data[ 'html' ] = CKEDITOR.cleanWord( content,editor );
                    // Reset property or if user tries to paste again,it won't work
                    editor.pasteFromWordHappened = 0;
                }
            });

            isLazyLoad && evt.cancel();
        }

    });
});

解决方法

猜你在找的JavaScript相关文章