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