做網站設計中,我們有時把前端頁面用css等代碼寫得好好點,然后加到ueditor編輯器中進行發(fā)布后,是正常的,但是回過頭來再進行修改時,發(fā)現有些標簽代碼如:div,dl,dt,dd等被過濾掉了,想保持style標簽的樣式,需要對百度js配置文件進行修改。百度官方為了保證安全考慮,默認會將style標簽轉為DIV標簽,導致樣式不能顯示出而出現錯亂效果。
本修改基于百度UEditor Plus 3.0.0版本修改如下
1、找到ueditor.config.js文件
// 將下面3個參數值改為false
// xss 過濾是否開啟,inserthtml等操作
,xssFilterRules: false
//input xss過濾
,inputXssFilter: false
//output xss過濾
,outputXssFilter: false
2、找到頁面引入的是 ueditor.all.min.js 還是 ueditor.all.js ,并修改:
1、 找到allowDivTransToP參數,這個參數會將DIV標簽轉為P標簽,設置為false
me.setOpt(
{
'allowDivTransToP':false,
'disabledTableInTable':true
}
);
2、 找到addInputRule方法,并將switch case 中的case style:刪除或注釋
switch (node.tagName) {
// case 'style':
// case 'script':
// node.setAttr({
// cdata_tag: node.tagName,
// cdata_data: (node.innerHTML() || ''),
// '_ue_custom_node_':'true'
// });
// node.tagName = 'div';
// node.innerHTML('');
// break;
case 'a':
if (val = node.getAttr('href')) {
node.setAttr('_href', val)
}
break;
3、搜索 node.tagName = ‘ul’; 把如下幾行注釋
if (p.firstChild()) {
node.parentNode.insertBefore(p, node);
}
node.parentNode.removeChild(node);
break;
// case 'dl':
// node.tagName = 'ul';
// break;
// case 'dt':
// case 'dd':
// node.tagName = 'li';
// break;
case 'li':
var className = node.getAttr('class');
if (!className || !/list-/.test(className)) {
node.setAttr()
}
var tmpNodes = node.getNodesByTagName('ol ul');
UE.utils.each(tmpNodes, function (n) {
node.parentNode.insertAfter(n, node);
});
4.ctrl+f5清除瀏覽器緩存,刷新網站。
最后重新添加前臺代碼,然后進行修改,發(fā)現代碼沒過濾掉,發(fā)布文章內容后也顯示正常了。
