3

我对 CKEditor 很陌生(两天前开始使用它),我仍在与一些配置作斗争,比如从编辑器中删除标签。

例如,如果用户在源模式下键入以下内容:

<script type="text/javascript">alert('hello');</script>

我想删除它。

查看文档,我发现这可以使用 HTML 过滤器来完成。我这么定义它但它不起作用。

var editor = ev.editor;
var dataProcessor = editor.dataProcessor;
var htmlFilter = dataProcessor && dataProcessor.htmlFilter;
htmlFilter.addRules(
    {
        elements :
          {
             script : function(element)
                {
                   alert('Found script :' + element.name);
                   element.remove();
                },
             img : function( element )
                {
                   alert('Found script :' + element.name);
                   if ( !element.attributes.alt )
                       element.attributes.alt = 'Cookingfactory';
                   }
                 }
             });

img 部分运行良好,但不是脚本之一。我想我错过了什么。它甚至不显示脚本的警报消息。

任何帮助都会非常受欢迎:o)

4

3 回答 3

2

你可以使用这个:

CKEDITOR.replace('editor1', {
   on: {
      pluginsLoaded: function(event) {
         event.editor.dataProcessor.dataFilter.addRules({
            elements: {
               script: function(element) {
                  return false;
               }
            }
         });
      }
   }
});
于 2013-05-07T06:56:30.063 回答
1

如果您使用的是 CKEditor 4.1 或更高版本,您可以使用高级内容过滤器来允许您想要的内容。

如果您使用的是 CKEditor 4.4 或更高版本,还有一种更简单的方法。您可以使用Disallowed Content来过滤您不喜欢的内容。

 config.disallowedContent = 'script';
于 2014-08-21T10:07:50.093 回答
0

因为我有 CKEditor 4,所以我做了下一个

CKEDITOR.instances.editor1.config.protectedSource.push( /{.*\".*}/g );

它将忽略 smarty 大括号中的引号

于 2014-07-18T14:10:33.490 回答