在TinyMCE 3中禁用图像的复制/粘贴

Disable copy/paste of images in TinyMCE 3

提问人:s427 提问时间:10/17/2023 最后编辑:s427 更新时间:10/17/2023 访问量:31

问:

在使用 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_preprocesscontent\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"
  • 如果我只是做或,图像仍然被粘贴;returnreturn 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 = '';
},

然后复制粘贴文本被有效地禁用,但复制粘贴图像仍然有效......

javascript tinymce 复制粘贴

评论


答: 暂无答案