【问题标题】:CKEditor - remove script tag with data processorCKEditor - 使用数据处理器删除脚本标签
【发布时间】:2012-10-25 09:38:32
【问题描述】:

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

【问题讨论】:

  • Andrea,感谢您的帮助。不确定该链接应该如何提供帮助(也许我并不完全了解),但您知道为什么我尝试的解决方案不起作用吗?
  • 不,不知道 htmlFilter。但是您要实现的是“从CKEditor中的源代码中剥离html标签”;我发布的链接是关于“从 CKEditor 剥离虚假 HTML”。接受的方案建议使用CKEditor的集成cleanUp功能,不用自己建...你试过了吗?
  • 我刚刚尝试过,但它看起来不起作用。而且它看起来比我想要的要多。 htmlfilter 解决方案的优点是您确实定义了如何处理特定标签。不知道 pastefromword 清理工具有什么作用。
  • 啊,当我使用保存按钮时它正在工作。但是,我仍然不知道这个过程完全是什么。我更愿意理解为什么 htmlfilter 不起作用(这似乎是做这种事情的正确方法)。

标签: javascript ckeditor data-processing


【解决方案1】:

你可以用这个:

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

【讨论】:

  • 我累了你的代码,当进入“源”模式并添加脚本标签,然后回到“设计”模式,脚本标签没有被删除。什么时候应该删除脚本标签?
【解决方案2】:

如果您使用的是 CKEditor 4.1 或更高版本,您可以使用Advanced Content Filter 来允许您想要的内容。

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

 config.disallowedContent = 'script';

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      • 2014-10-02
      • 2017-02-09
      • 1970-01-01
      • 2010-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多