提问人:s427 提问时间:10/17/2023 最后编辑:s427 更新时间:10/17/2023 访问量:31
在TinyMCE 3中禁用图像的复制/粘贴
Disable copy/paste of images in TinyMCE 3
问:
在使用 TinyMCE 3.4.9 的内部工具上,我被要求禁用在编辑器中粘贴图像的可能性。(具体图片;我不想完全禁用复制粘贴:用户应该仍然能够粘贴富文本或 HTML 内容。
我已经在使用该函数成功检测某人何时粘贴包含标签的 HTML 代码,并将其删除:paste_preprocess
<img>
paste_preprocess : function (pl, o) {
if (o.content.indexOf('<img ') > -1) {
o.content = o.content.replace(/<img[^>"']*((("[^"]*")|('[^']*'))[^"'>]*)*>/g,"");
}
},
当用户在网页上复制图像并将其粘贴到编辑器中时,这就会起作用。
但是,当用户从其操作系统文件管理器复制图像时,这不起作用(例如 Windows 桌面:选择一个 JPG 文件,Ctrl+C,然后在 TinyMCE 中按 Ctrl+V)。
在这种情况下,当我尝试检查 中的“o”对象时,该属性显示为空。或者更准确地说,它似乎包含我认为与 Unicode 编码 (?) 相关的字符串。paste_preprocess
content
\ufeff\ufeff
这允许我在 :paste_preprocess
if (o.content == "\ufeff\ufeff") {
console.log('image?');
}
我不知道它是否很漂亮,但这似乎有效。当我从操作系统粘贴图像时,而不是当我粘贴其他类型的内容(从网页复制的 HTML 内容、来自文本编辑器的原始文本 (Sublime Text) 或来自文字处理器的富文本 (Libre Office)) 时,会触发该消息。console.log
但是,我不知道如何防止图像被粘贴到编辑器中:
- 如果我这样做,图像仍然被粘贴;
o.content = ''
- 如果我这样做,那么图像仍然被粘贴,文本“image”就在它前面;
o.content = "image"
- 如果我只是做或,图像仍然被粘贴;
return
return false
o.stopImmediatePropagation()
,或全部触发 JavaScript 错误(“不是函数”)。o.stopPropagation()
o.preventDefault()
我对函数做了同样的事情,结果相同。paste_postprocess
在TinyMCE中禁用插件似乎并没有改变任何事情。paste
我在这里错过了什么?
编辑:
即使我的整个功能是:paste_preprocess
paste_preprocess : function (pl, o) {
o.content = '';
},
paste_postprocess : function (pl, o) {
o.content = '';
},
然后复制粘贴文本被有效地禁用,但复制粘贴图像仍然有效......
答: 暂无答案
评论