gpt4 book ai didi

javascript - 在 CKEditor 3 中对所有粘贴的内容使用 "pastefromword"过滤

转载 作者:数据小太阳 更新时间:2023-10-29 05:03:10 25 4
gpt4 key购买 nike

CKEditor 是一个很棒的编辑器,pastefromword 插件也非常好。我希望将插件提供的过滤应用于所有粘贴的文本。例如,从 word 粘贴时,所有字体和大小都会被剥离。从电子邮件粘贴时不会发生这种情况。

也就是说,我提出了以下解决方案并将其发布在此处以获得一些反馈。我想知道我是不是把它弄得太复杂了,或者是否有更简单的方法。我只是从 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();
}

});
});

最佳答案

我的解决方案现在在此博客条目中:http://www.keyvan.net/2012/11/clean-up-html-on-paste-in-ckeditor/

关于javascript - 在 CKEditor 3 中对所有粘贴的内容使用 "pastefromword"过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5227140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com