命令

PowerPaste 插件提供以下 TinyMCE 命令。

命令描述

mceInsertClipboardContent

在光标位置或当前选区上触发粘贴事件。HTML 内容将自动检测为 Word、Google Docs 或标准 HTML 内容,并使用相应的粘贴路径。该命令需要一个对象,包含:html(HTML 内容)或text(纯文本)。

mceTogglePlainTextPaste

切换以纯文本形式粘贴。

示例
tinymce.activeEditor.execCommand('mceInsertClipboardContent', false, {
  html: '<p>Hello, World!</p>'
});
tinymce.activeEditor.execCommand('mceTogglePlainTextPaste');

事件监听器

还可以在运行时使用事件监听器配置自定义粘贴过滤。

  • PastePreProcess 等效于 paste_preprocess

  • PastePostProcess 等效于 paste_postprocess

事件监听器会传递与其等效配置选项相同的数据对象。只要有 Editor API 的引用,就可以随时配置或更改事件监听器回调函数。

TinyMCE 配置示例:

const yourCustomFilter = function(content) {
  // 实现自定义过滤并返回过滤后的内容
  return content;
};

tinymce.init({
  selector: 'textarea',
  plugins: 'powerpaste',
  setup: function(editor) {
    editor.on('PastePreProcess', function(data) {
      console.log(data.content, data.mode, data.source);
      // 通过修改 data.content 应用自定义过滤
      const content = data.content;
      const newContent = yourCustomFilter(content);
      data.content = newContent;
    });

    editor.on('PastePostProcess', function(data) {
      console.log(data.node, data.mode, data.source);
      // 通过修改 data.node 应用自定义过滤
      // 例如:
      const additionalNode = document.createElement('div');
      additionalNode.innerHTML = '<p>这段内容将插入到粘贴内容的前面。</p>';
      data.node.insertBefore(additionalNode, data.node.firstElementChild);
    });
  }
});