我正在使用Episerver 9。我有一个需求,用户可以将包含HTML标记的内容复制到TinyMCE编辑器中。
我只想要粘贴文本内容。默认情况下,应该自动过滤掉HTML标签。
是否有办法在TinyMCE中实现此功能?
您可以使用TinyMCEPluginNonVisual
属性在Episerver中注册自定义的TinyMCE插件。通过将AlwaysEnabled
设置为false
,您可以使用属性设置来确定该插件是否应该对特定的编辑器/XHTML属性启用或禁用。
[TinyMCEPluginNonVisual(AlwaysEnabled = false, PlugInName = "customplugin")]
public class MyCustomPlugin
{
}
您的实际 TinyMCE 插件(即 JavaScript 代码)可能如下所示:
(function (tinymce, $) {
tinymce.create('tinymce.plugins.customplugin', {
init: function (editor, url) {
editor.onPaste.add(function (editor, event) {
if (!event.clipboardData || !event.clipboardData.items) {
return;
}
// TODO Modify event.clipboardData, for example to strip out HTML tags
});
}
});
// Register plugin
tinymce.PluginManager.add('customplugin', tinymce.plugins.customplugin);
}(tinymce, epiJQuery));
虽然这不是一个完整的例子,但它应该可以帮助您朝正确的方向开始。
您还应该查看官方文档。
编辑:如果您只想修改paste_as_text
设置,您可以注册一个插件,并通过TinyMCEPluginNonVisual
属性设置配置:
[TinyMCEPluginNonVisual(EditorInitConfigurationOptions = "{ paste_as_text: true }")]
public class PasteAsTextPlugin
{
}
paste
插件,你可以使用以下方法强制TinyMCE始终将粘贴的内容作为纯文本处理:tinymce.init({
...
plugins: "paste",
paste_as_text: true
...
});
我认为Episerver会提供一些方法来操作TinyMCE的配置。在该配置中添加"paste_as_text"选项即可满足您的需求。