在線客服

電話①:189 6508 9135(張先生)
電話②:134 0599 8886(何小姐)
電話③:0591-83489135

技術(shù)文章


ASPCMS用百度編輯器JS/html代碼(script標(biāo)簽)被過(guò)濾的解決辦法


我們用百度編輯器在文章中經(jīng)常會(huì)插入各種代碼,在第一次添加插入代碼后,源碼模式下看起來(lái)是正常的,但是為什么保存完之后,數(shù)據(jù)庫(kù)中正常,但是編輯器中不正常呢?那是因?yàn)楹笈_(tái)的百度編輯器就會(huì)把script標(biāo)簽給過(guò)濾掉,不能完整的顯示。今天我們印秀網(wǎng)絡(luò)來(lái)教你解決這個(gè)問(wèn)題。

很多富文本編輯器都有兩種初始化方式,以UEditor為例,一種是textarea標(biāo)簽,一種是script標(biāo)簽。

舉例textarea方式:

<textarea id="container" name="content">
    這里寫你的初始化內(nèi)容</textarea><script type="text/javascript" src="ueditor.config.js"></script><script type="text/javascript" src="ueditor.all.js"></script><script type="text/javascript">
    var ue = UE.getEditor('container');</scritp>

舉例script方式:

<script id="container" name="content" type="text/plain">
    這里寫你的初始化內(nèi)容</script><script type="text/javascript" src="ueditor.config.js"></script><script type="text/javascript" src="ueditor.all.js"></script><script type="text/javascript">
    var ue = UE.getEditor('container');</script>

兩種方式的區(qū)別也只在于容器,我之前一直使用的是textarea方式,因?yàn)楫?dāng)時(shí)UEditor的script方式有一些小問(wèn)題。

在今天尋找過(guò)濾問(wèn)題的解決辦法時(shí),想了很多辦法,看別人的配置文件等,但終究沒(méi)解決。在不斷搜索中,打開(kāi)UEditor之前的幫助文檔,現(xiàn)在官網(wǎng)已經(jīng)去除了該舊文檔的鏈接,在該文檔中看到了這樣一個(gè)問(wèn)題:

大部分編輯器的容器都使用textarea,為什么UEditor采用了很特殊的script標(biāo)簽?

首先要說(shuō)明一點(diǎn)的是,UEditor也支持textarea標(biāo)簽作為編輯器的外圍容器,只要將對(duì)應(yīng)的標(biāo)簽名字換成textarea即可。除此之外,UEditor還支持使用div和script標(biāo)簽作為其容器。之所以要這樣做,只是為了盡最大可能去滿足和適應(yīng)用戶的各種不同需求。官方推薦使用script標(biāo)簽的原因是textarea會(huì)在提交數(shù)據(jù)的時(shí)候自動(dòng)對(duì)里面的部分html文本進(jìn)行一次特殊字符轉(zhuǎn)義,從而導(dǎo)致有些不熟悉的用戶在再編輯的時(shí)候出現(xiàn)編碼混亂的問(wèn)題。而使用script標(biāo)簽可以很好地克服這個(gè)缺點(diǎn)。

官方文檔里面提到了“官方推薦使用script標(biāo)簽的原因是textarea會(huì)在提交數(shù)據(jù)的時(shí)候自動(dòng)對(duì)里面的部分html文本進(jìn)行一次特殊字符轉(zhuǎn)義”,看到這句話后豁然開(kāi)朗,一切問(wèn)題的根源都在于容器標(biāo)簽而已,將容器標(biāo)簽修改為script后,一切都正常了。

ASPCMS前端代碼顯示不完整解決方案

1、修改inc/AspCms_CommonFun.asp,代碼728處左右

Function decodeHtml(Byval str)
IF len(str)=0 OR Trim(str)="" or isNull(str) then exit function
str=replace(str,"&apos;",CHR(39))
str=replace(str,"&#160;"," ")
decodeHtml=str
End Function

添加下面一段新代碼

Function decodeHtml2(Byval str)
IF len(str)=0 OR Trim(str)="" or isNull(str) then exit function
str=replace(str,"&nbsp;"," ")
str=replace(str,"&quot;",CHR(34))
decodeHtml2=str
End Function

2、修改inc/AspCms_templateFun.asp,代碼624處左右

添加下面一段新代碼

content=replacekey(decodeHtml2(rsObj("Content")))

3、修改aspcms_admin/_content/_Content/AspCms_ContentAdd.asp

<script id="myEditor" name="Content" type="text/plain"><%=content%></script>
<script> UE.getEditor('myEditor'); </script>

4、修改aspcms_admin/_content/_Content/AspCms_ContentEdit.asp

<script id="myEditor" name="Content" type="text/plain"><%=content%></script>
<script> UE.getEditor('myEditor'); </script>

5、修改aspcms_admin/_content/AspCms_ContentFun.asp,代碼237行下添加一段代碼

Content=decodeHtml2(rs("Content"))

相關(guān)文章

首頁(yè)  電話  咨詢  頂部