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

Tinymce 4:如何允许将粘贴内容转换为纯文本和正常模式,tinymce,editor,wysiwyg,wysihtml5,Tinymce,Editor,Wysiwyg,Wysihtml5,新的TINYMCE(版本4)允许使用: paste_as_text: true 问题是,这使所有粘贴都能够转换为纯文本。我希望能够做到这一点:当用户将内容直接粘贴到tinymce时,它将始终清理内容并将其转换为纯文本,但如果用户点击按钮,将出现一个对话框,以便用户可以在该对话框中粘贴内容,tinymce不会“触摸”它,它将直接粘贴到编辑器 实际上,这是3.X版本的默认行为,您可以有一个特定的“从WORD粘贴”按钮(它实际上适用于您想要粘贴的任何内容),因此您可以从WORD和it冷粘贴内容,而不

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

paste_as_text: true
问题是,这使所有粘贴都能够转换为纯文本。我希望能够做到这一点:当用户将内容直接粘贴到tinymce时,它将始终清理内容并将其转换为纯文本,但如果用户点击按钮,将出现一个对话框,以便用户可以在该对话框中粘贴内容,tinymce不会“触摸”它,它将直接粘贴到编辑器

实际上,这是3.X版本的默认行为,您可以有一个特定的“从WORD粘贴”按钮(它实际上适用于您想要粘贴的任何内容),因此您可以从WORD和it冷粘贴内容,而不会将其转换为纯文本

我看到tinymce有一个外部的“强大的粘贴插件”,但它不是免费的,所以我如何在不购买插件的情况下解决这个问题

编辑:

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

 tinymce.settings.paste_as_text = false;

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

加载
粘贴插件时,默认情况下,它会将两项添加到编辑菜单中:

  • 粘贴
  • 粘贴为文本
…因此,您需要的是
粘贴
插件的标准部分。在TinyMCE 4中,它通过编辑菜单而不是工具栏显示

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

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

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

首先,您需要确定粘贴插件的当前“模式”。为此,您可以使用:

tinymce.activeEditor.plugins.paste.clipboard.pasteFormat
这将(基于4.6.5的当前TinyMCE版本)返回三个值之一:
“html”
“text”
,或
未定义的
。我相信它总是以
undefined
开始,直到您启动一次切换

如果要将行为切换到其他模式,可以执行以下操作:

tinymce.activeEditor.execCommand('mceTogglePlainTextPaste');

请注意,is是一个切换开关,因此无论设置为什么,它都将切换到相反的模式。没有公开的方法调用可用于强制它进入一种模式或另一种模式。

加载
粘贴插件时,默认情况下,它会向编辑菜单添加两项:

  • 粘贴
  • 粘贴为文本
…因此,您需要的是
粘贴
插件的标准部分。在TinyMCE 4中,它通过编辑菜单而不是工具栏显示

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

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

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

首先,您需要确定粘贴插件的当前“模式”。为此,您可以使用:

tinymce.activeEditor.plugins.paste.clipboard.pasteFormat
这将(基于4.6.5的当前TinyMCE版本)返回三个值之一:
“html”
“text”
,或
未定义的
。我相信它总是以
undefined
开始,直到您启动一次切换

如果要将行为切换到其他模式,可以执行以下操作:

tinymce.activeEditor.execCommand('mceTogglePlainTextPaste');

请注意,is是一个切换开关,因此无论设置为什么,它都将切换到相反的模式。没有公开的方法调用可用于强制将其转换为一种模式或另一种模式。

问题是,我需要能够使用工具栏而不是菜单栏“切换该开关”,我实际上隐藏了菜单栏。你知道使用工具栏上的自定义按钮允许过去的普通文本和过去的纯文本吗?哇,这真是太好了!!!;)按钮太棒了!我是否使用tinymce对象动态地打开/关闭它?您提供的这个解决方案非常好,但在某些情况下,我希望使用JS启用/禁用“粘贴到纯文本”开关。我想我可以假装点击按钮,但我想我更喜欢一个更好的选择,比如可以随时将“粘贴为”文本设置为false或true。@Samul查看我的第二次编辑。如果这解决了问题,你能接受答案让其他人知道这解决了你的问题吗?当然,我的朋友,你太棒了。我不知道你是怎么知道这件事的,因为我在谷歌上搜索了几个小时才来问你,你的回答非常清楚@Samul我刚刚打开了粘贴插件的源代码;-)问题是,我需要能够使用工具栏而不是菜单栏“切换该开关”,我实际上隐藏了菜单栏。你知道使用工具栏上的自定义按钮允许过去的普通文本和过去的纯文本吗?哇,这真是太好了!!!;)按钮太棒了!我是否使用tinymce对象动态地打开/关闭它?您提供的这个解决方案非常好,但在某些情况下,我希望使用JS启用/禁用“粘贴到纯文本”开关。我想我可以假装点击按钮,但我想我更喜欢一个更好的选择,比如可以随时将“粘贴为”文本设置为false或true。@Samul查看我的第二次编辑。如果这解决了问题,你能接受答案让其他人知道这解决了你的问题吗?当然,我的朋友,你太棒了。我不知道你是怎么做到的