Tinymce 4:如何允许将粘贴的内容转换为纯文本和正常模式

Tinymce 4: how to allow converting pasted content to plain text AND to normal mode

新的 TINYMCE(版本 4)允许使用:

paste_as_text: true

问题是这使得所有粘贴都可以转换为纯文本。我将能够做到这一点:当用户将内容直接粘贴到 tinymce 时,它​​总是会清除内容并将其转换为纯文本,但是如果用户单击按钮,则会出现一个对话框,以便用户可以将内容粘贴到该对话框和 tinymce 中不会"touch",它会直接粘贴到编辑器。

实际上这是 3.X 版本的默认行为,你可以有一个特定的 PASTE FROM WORD 按钮(它实际上适用于你想粘贴的任何东西)所以你冷粘贴 word 中的内容,它和它不会转换为纯文本。

我看到有来自 tinymce 的外部 "powerful paste plugin" 但它不是免费的,那么我如何在不购买插件的情况下解决这个问题?

编辑:

即使将事件附加到粘贴过程,我也无法像这样动态更改 paste_as_text,例如:

 tinymce.settings.paste_as_text = false;

我可以在我的代码中执行该行而没有错误,但它没有产生任何效果,我仍然无法粘贴内容而不被简化为纯文本。

默认情况下加载 paste 插件时,它会向“编辑”菜单添加两个项目:

  • 粘贴
  • 粘贴为文本

...所以你想要的是 paste 插件的标准部分。在 TinyMCE 4 中,它通过编辑菜单而不是工具栏公开。

编辑 #1: 如果您将 pastetext 按钮添加到工具栏,它允许您在粘贴为文本和常规粘贴之间切换粘贴功能。该按钮切换发生在粘贴事件上的行为。它的行为与 TinyMCE 3 中的行为不完全相同(您在问题中描述的行为)。

编辑 #2 - 以编程方式更改此行为

您可以使用代码来切换此设置,但您需要几次不同的调用才能获得所需内容。

首先,您需要确定粘贴插件当前的 "mode" 是什么。为此,您可以使用:

tinymce.activeEditor.plugins.paste.clipboard.pasteFormat

这将(基于当前的 TinyMCE 版本 4.6.5)return 三个值之一:"html""text"undefined。我相信它总是以 undefined 开头,直到您启动一次切换。

如果您想将行为切换到其他模式,您可以这样做:

tinymce.activeEditor.execCommand('mceTogglePlainTextPaste');

请注意这是一个 切换 - 所以无论它被设置成什么都会切换到相反的模式。没有公开的方法调用可用于将其强制为一种模式或另一种模式。