CKEditor - 使用数据处理器删除脚本标记

时间:2012-10-25 09:38:33

标签: javascript ckeditor data-processing

我是CKEditor的新手(2天前开始使用它),我仍在使用一些配置,例如从编辑器中删除标签。

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

<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)

3 个答案:

答案 0 :(得分:2)

您可以使用:

CKEDITOR.replace('editor1', {
   on: {
      pluginsLoaded: function(event) {
         event.editor.dataProcessor.dataFilter.addRules({
            elements: {
               script: function(element) {
                  return false;
               }
            }
         });
      }
   }
});

答案 1 :(得分:1)

如果您使用的是CKEditor 4.1或更高版本,则可以使用Advanced Content Filter来提供所需的内容。

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

 config.disallowedContent = 'script';

答案 2 :(得分:0)

当我有CKEditor 4时,我做了下一个

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

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