TinyMce 6 禁止粘贴图片实现方案求助
阻止TinyMce文本框内粘贴图片的可行方案
这里提供几个直接可用的实现方案,同时说明你遇到的oninit:"setPlainText"无效的原因:
方案1:通过Paste插件的预处理钩子过滤图片
利用TinyMce自带的Paste插件,在粘贴前拦截并移除内容中的图片标签,甚至直接转成纯文本:
tinymce.init({ plugins: 'paste', // 移除所有图片标签 paste_preprocess: function(plugin, args) { args.content = args.content.replace(/<img[^>]*>/g, ''); } });
如果需要强制所有粘贴内容都是纯文本,可修改为:
paste_preprocess: function(plugin, args) { const tempContainer = document.createElement('div'); tempContainer.innerHTML = args.content; args.content = tempContainer.textContent || tempContainer.innerText || ''; }
方案2:监听粘贴事件直接拦截图片数据
通过编辑器的粘贴事件,检查剪贴板中是否包含图片类型的数据,直接阻止粘贴行为:
tinymce.init({ setup: function(editor) { editor.on('paste', function(e) { const clipboardData = e.clipboardData || window.clipboardData; // 检测剪贴板是否有图片 const hasImage = Array.from(clipboardData?.items || []).some(item => item.type.startsWith('image/')); if (hasImage) { e.preventDefault(); // 可选:添加用户提示 alert('不允许粘贴图片'); } }); } });
方案3:PowerPaste插件配置(若已安装)
如果你已经使用了PowerPaste插件,可通过以下配置直接禁用图片粘贴:
tinymce.init({ plugins: 'powerpaste', powerpaste_allow_local_images: false, powerpaste_block_drop: true, // 同时阻止拖拽图片 powerpaste_cleanup: true, powerpaste_word_import: 'clean', powerpaste_html_import: 'clean' });
关于oninit:"setPlainText"无效的说明
setPlainText并不是TinyMce的内置初始化方法,这个写法本身不生效。要强制粘贴纯文本,除了上面的预处理钩子,还可以直接开启Paste插件的paste_as_text选项:
tinymce.init({ plugins: 'paste', paste_as_text: true // 所有粘贴内容强制转为纯文本 });
内容的提问来源于stack exchange,提问作者stef157
相关产品推荐
相关产品推荐

