ueditor不自動加P解決方法

百度的Ueditor編輯器出於安全考慮;css

用戶在html模式下粘貼進去的html文檔會自動被去除樣式和轉義。html

雖然安全的,可是很是不方便。 node

作一下修改把這個功能去掉。 安全

1、打開ueditor.all.js app

2、大概9300行找到 ///plugin 編輯器默認的過濾轉換機制,把下面的編輯器

'allowDivTransToP':truespa

值改爲false。爲true的時候會自動把div轉成p。 code

3、大概9429行,有個case 'li',這個是把li裏面的樣式去掉,把這個case註釋掉。 htm

4、大概14058行,下面的第一個utils.each功能註釋掉,這個是自動給li裏面的內容增長一個p。 blog

5、大概14220行,

node.className = utils.trim(node.className.replace(/list-paddingleft-\w+/,'')) + ' list-paddingleft-' + type;

註釋掉,這個是自動給ul增長一個內置的樣式。 

下面的14222

li.style.cssText && (li.style.cssText = '');

註釋掉,這個是自動去除粘貼進去的代碼的li的style樣式 

 

至此,咱們粘貼進去的html格式的ul和li就不會被轉義了。

 

上邊是引用,下邊是我多加的來滿在哪裏也都不加P或P里加BR等等等

15112行左右:(下邊代碼註釋掉)

 

utils.each(root.getNodesByTagName('li'),function(li){
            var tmpP = UE.uNode.createElement('p');
            for(var i= 0,ci;ci=li.children[i];){
                if(ci.type == 'text' || dtd.p[ci.tagName]){
                    tmpP.appendChild(ci);
                }else{
                    if(tmpP.firstChild()){
                        li.insertBefore(tmpP,ci);
                        tmpP = UE.uNode.createElement('p');
                        i = i + 2;
                    }else{
                        i++;
                    }
 
                }
            }
            if(tmpP.firstChild() && !tmpP.parentNode || !li.firstChild()){
                li.appendChild(tmpP);
            }
            //trace:3357
            //p不能爲空
            if (!tmpP.firstChild()) {
                tmpP.innerHTML(browser.ie ? '&nbsp;' : '<br/>')
            }
            //去掉末尾的空白
            var p = li.firstChild();
            var lastChild = p.lastChild();
            if(lastChild && lastChild.type == 'text' && /^\s*$/.test(lastChild.data)){
                p.removeChild(lastChild)
            }
        });

 

10079行左右:(註釋掉)[dl dd dt 元素就不會自動轉成 ul li 元素了]

 

node.tagName = 'ul';
 
node.tagName = 'li';

 

轉載自:http://os.zhongziyun.com/code/40030/

相關文章
相關標籤/搜索