2

我需要将粘贴文本的 HTML 清理到 TinyMCE 中,方法是将其传递给 Web 服务,然后将其返回到 textarea。所以我需要覆盖 TinyMCE 中的 Ctrl+V 来捕获文本,执行后台请求,然后在返回时继续使用 TinyMCE 的粘贴处理程序。首先,TinyMCE 的 Ctrl+V 处理程序在哪里,有没有一种非破坏性的方法来覆盖它?(而不是更改源代码)

4

2 回答 2

3

您可以编写一个插件来处理 ctrl+v 事件并将其传递或修改粘贴插件。以下代码位于plugins/paste/editor_plugin.js 中,它处理 ctrl+v 事件。

  handleEvent : function(e) {
          // Force paste dialog if non IE browser
          if (!tinyMCE.isRealIE && tinyMCE.getParam("paste_auto_cleanup_on_paste", false) && e.ctrlKey && e.keyCode == 86 && e.type == "keydown") {
             window.setTimeout('tinyMCE.selectedInstance.execCommand("mcePasteText",true)', 1);
             return tinyMCE.cancelEvent(e);
          }

          return true;
       },

以下是有关为 tinyMCE 创建插件的更多信息

于 2008-09-23T08:44:17.713 回答
0

Tiny Editor 有一个名为“粘贴”的插件。

使用的时候可以在init-section定义两个函数

/**
 * This option enables you to modify the pasted content BEFORE it gets
 * inserted into the editor.
 */
paste_preprocess : function(plugin, args)
{
     //Replace empty styles
    args.content = args.content.replace(/<style><\/style>/gi, "");
}

/**
 * This option enables you to modify the pasted content before it gets inserted
 * into the editor ,but after it's been parsed into a DOM structure.
 *
 * @param plugin
 * @param args
 */
paste_postprocess : function(plugin, args) {
    var paste_content= args.node.innerHTML;
    console.log('Node:');
    console.log(args.node);

}
于 2018-11-08T19:32:43.177 回答