请选择 进入手机版 | 继续访问电脑版
查看: 10162|回复: 4

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

[复制链接]
发表于 2016-11-24 12:37:14 | 显示全部楼层 |阅读模式
本帖最后由 憇心DJ 于 2016-11-24 13:31 编辑

百度编辑器过滤html标签,这个很是头疼,DIV都过滤掉了,有没有大神知道简单粗暴的解决方法。网上的办法貌似不太管用啊
 楼主| 发表于 2016-11-24 13:07:42 | 显示全部楼层
没有大神会吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-24 13:29:54 | 显示全部楼层
封贴!
问题解决,由于百度出于安全问题,设置部分标签过滤功能,下面这个是我找到的方法,一下是复制,希望给以后的朋友提供方便,红色是添加的,找到这个这个位置加上红色代码就可以了:

“简单粗暴法”:在文件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标签。
回复 支持 0 反对 2

使用道具 举报

发表于 2017-12-18 15:03:54 | 显示全部楼层
在使用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标签又被过滤了

原有代码:

<div class="td-text fl">
  <span><p style="margin-top:60px;">初始</p></span>
</div>
<div class="text-one fl">
  <div class="one-one">
    <span class="fl"><p>挂资质</p></span>
    <span class="fl"><p>1.2W/年</p></span>
  </div>
  <div class="one-two">
    <span class="fl"><p>挂项目</p></span>
    <span class="fl"><p>1.3W/年</p></span>
  </div>
</div>



被过滤后的代码:


<div class="td-text fl">
  <p style="margin-top:60px;">初始</p>
</div>
<div class="text-one fl">
  <div class="one-one">
    <span class="fl"><p>挂资质</p></span>
    <span class="fl"><p>1.2W/年</p></span>
  </div>
  <div class="one-two">
    <span class="fl"><p>挂项目</p></span>
    <span class="fl"><p>1.3W/年</p></span>
  </div>
</div>

带有class的span没有被过滤,什么都没有的span被过滤了...什么鬼,怎么会这样...
抓耳挠腮半小时之后,偶然的一瞥,看到ueiter.all.js中有一个autoClearEmptyNode:true,抱着试一试的态度,我给改成了false,然后再一试,成了,那个什么都没有的span标签没有被过滤,我又试了好几次,真的是这个问题~~赶紧记了下来~~哈哈,问题解决~~
回复 支持 1 反对 0

使用道具 举报

发表于 2020-3-13 16:51:59 | 显示全部楼层
不行啊,折腾一下午都没解决
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

手机版|Archiver|Baidu Inc.

GMT+8, 2021-1-18 08:49 , Processed in 0.177920 second(s), 15 queries .

Powered by Discuz! X3.2

© 2001-2011 Comsenz Inc.

返回顶部