在使用Kindeditor編輯器的時(shí)候都會(huì)遇到這樣一個(gè)問(wèn)題,如:給A標(biāo)簽加上title屬性過(guò)后,瀏覽的時(shí)候,卻神奇般地發(fā)現(xiàn)title屬性沒(méi)有了。再次切換html源代碼的時(shí)候,返現(xiàn)編輯器將title屬性給刪掉了。追究其根本原因主要是kindeditor設(shè)置了標(biāo)簽和屬性的默認(rèn)過(guò)濾機(jī)制。KindEditor默認(rèn)狀態(tài)下會(huì)過(guò)濾編輯器里的html代碼,主要是為了生成干凈的代碼,如何避免自己手動(dòng)添加的代碼被不必要的過(guò)濾。
首先我們知道3.4版本以上版本默認(rèn)開(kāi)啟了過(guò)濾模式(filterMode:true)。當(dāng)filterMode為true時(shí),編輯器會(huì)根據(jù)htmlTags設(shè)定自動(dòng)過(guò)濾HTML代碼。
可是在我們平時(shí)的使用中,為了精簡(jiǎn)內(nèi)容代碼和達(dá)到好特定的顯示效果,經(jīng)常會(huì)用一些div跟css的代碼,如果不更改編輯器的設(shè)定,這些代碼都會(huì)被過(guò)濾,所以如果想保留所有HTML相關(guān)代碼,請(qǐng)將kindeditor.js或kindeditor-all-min.js或kindeditor-min.js里的filterMode設(shè)置成false。如果想保留特定HTML,請(qǐng)將 filterMode設(shè)置成true后,配置htmlTags屬性。filterMode : true // true:開(kāi)啟過(guò)濾模式, false:關(guān)閉過(guò)濾模式如果改成filterMode : false之后,編輯器里面添加的代碼就都會(huì)被保留。
可是如果我只是想不過(guò)濾某個(gè)標(biāo)簽,其他的還是正常過(guò)濾,應(yīng)該怎么辦呢?比如說(shuō)我想保留行距代碼,其他的還是正常過(guò)濾。這時(shí)候我們可以通過(guò)設(shè)置其htmlTags屬性來(lái)得以實(shí)現(xiàn)。KindEditor 默認(rèn)采用白名單過(guò)濾方式,可用 htmlTags 參數(shù)定義要保留的標(biāo)簽和屬性 htmlTags指定要保留的HTML標(biāo)記和屬性。Object的key為HTML標(biāo)簽名,value為HTML屬性數(shù)組,”.”開(kāi)始的屬性表示style屬性。修改的文件為kindeditor.js 例子如下所示:在span下面添加line-height屬性標(biāo)簽就可以了,當(dāng)然要按照格式來(lái)添加,格式可以參照其他已經(jīng)有的標(biāo)簽。
綜上所述,通過(guò)以上兩種方式即可實(shí)現(xiàn)kindeditor編輯器的標(biāo)簽和屬性過(guò)濾效果。
記得修改完后一定要注意關(guān)掉編輯器的界面,然后清空瀏覽器緩存,然后重新打開(kāi)才能生效。