内容详情 您现在的位置是: 首页> Js

百度编辑器过滤html标签如何解决

发布时间:2020-10-14 19:31 已围观:1399

摘要百度编辑器过滤html标签如何解决

问题解决,由于百度出于安全问题,设置部分标签过滤功能,下面这个是我找到的方法,一下是复制,希望给以后的朋友提供方便,红色是添加的,找到这个这个位置加上红色代码就可以了:“简单粗暴法”:在文件ueditor.all.js中(这是在放置百度编辑器文件夹里的一个文件),有个函数

UE.plugins['defaultfilter'] = function(){......},上面注释为,编辑器默认的过滤转换机制。可在函数开头直接添加 return 语句,使所有过滤机制都不生效。
UE.plugins['defaultfilter'] = function () {
   return;
 var me = this;
 me.setOpt({
    'allowDivTransToP':true,
    'disabledTableInTable':true
});
 //默认的过滤处理
同理,对ueditor.all.min.js做同样处理:(可搜索 defaultfilter 定位)
defaultfilter=function(){return;var a=this;a.setOpt

这样,UEditor自带的所有过滤机制都无效,可在源码模式下随意使用html标签。在使用uediter编辑html代码的时候,div,span等标签会莫名其妙的被过滤掉,然后上网查资料,改了点配置: 1.在ueiter.all.js中找到allowDivTransToP

me.setOpt({
    'allowDivTransToP':true,
    'disabledTableInTable':true
});
true改为false
me.setOpt({
    'allowDivTransToP':false,
    'disabledTableInTable':true
});

2.在ueditor.config.js中找到allowDivTransToP

//默认过滤规则相关配置项目
//,disabledTableInTable:true //禁止表格嵌套
//,allowDivTransToP:true   //允许进入编辑器的div标签自动变成p标签
//,rgb2Hex:true         //默认产出的数据中的color自动从rgb格式变成16进制格式
把true改为false
//默认过滤规则相关配置项目
//,disabledTableInTable:true //禁止表格嵌套
,allowDivTransToP:false    //允许进入编辑器的div标签自动变成p标签
//,rgb2Hex:true         //默认产出的数据中的color自动从rgb格式变成16进制格式

3.在ueditor.config.js中找到whitList白名单,有的地方说直接添加一个div[] span[] 类似于,但是下面已经配置有这两项,所以我就根据我的需要,在这两项中添加了'name','id'就像上图。如果有其他标签就再添加 4.在ueiter.all.js中找到me.addOutputRule...把该注释的注视掉,代码如下

//从编辑器出去的内容处理
me.addOutputRule(function (root) {
var val;
root.traversal(function (node) {
if (node.type == 'element') {
         /*if (me.options.autoClearEmptyNode && dtd.$inline[node.tagName] && !dtd.$empty[node.tagName] && (!node.attrs || utils.isEmptyObject(node.attrs))) {
            if (!node.firstChild()) node.parentNode.removeChild(node);
            else if (node.tagName == 'span' && (!node.attrs || utils.isEmptyObject(node.attrs))) {
              node.parentNode.removeChild(node, true)
            }
            return;
        }*/
switch (node.tagName) {
case 'div':
if (val = node.getAttr('cdata_tag')) {
node.tagName = val;
                      node.appendChild(UE.uNode.createText(node.getAttr('cdata_data')));
                node.setAttr({cdata_tag: '', cdata_data: '','_ue_custom_node_':''});
              }
               break;
          case 'a':
                   if (val = node.getAttr('_href')) {
                    node.setAttr({
                        'href': utils.html(val),
                        '_href': ''
                    })
                    }
                break;
                break;
          /*case 'span':
                  val = node.getAttr('id');
                  if(val && /^_baidu_bookmark_/i.test(val)){
                    node.parentNode.removeChild(node)
                  }
                break;*/
             case 'img':
              if (val = node.getAttr('_src')) {
                node.setAttr({
                  'src': node.getAttr('_src'),
                   '_src': ''
                    })
              }
        }
      }
  })
});
};

5在ueiter.all.js中找到enterTag: 'p',改为:enterTag: '',这一步然后以上的都改完之后,div和span标签基本上标签就不会被过滤了,但这个时候span标签又被过滤了带有class的span没有被过滤,什么都没有的span被过滤了...看到ueiter.all.js中有一个autoClearEmptyNode:true,改成了false,span标签没有被过滤,问题解决~~

赞一个 (6)