在JavaScript中對(duì)HTML進(jìn)行反轉(zhuǎn)義詳解
在JavaScript中對(duì)字符串進(jìn)行轉(zhuǎn)義和反轉(zhuǎn)義操作,常用的方法莫過(guò)于使用encodeURI (decodeURI)、encodeURIComponent (decodeURIComponent)這幾個(gè)方法,具體使用方法和區(qū)別。
但是如何在JavaScript中對(duì)HTML進(jìn)行反轉(zhuǎn)義操作呢?例如下面這段代碼:
var jsonData = { title: "<%= data.name? data.name : title %>", desc: "<%= data.content? data.content : '' %>", image: "<%- data.img? data.img : '' %>" };
其中<%= %>包起來(lái)的部分是從服務(wù)端返回的值(上例中的代碼取自Node.js中Express的ejs模板的代碼)。如果從服務(wù)端返回的字符串中包含有引號(hào),例如單引號(hào)或者雙引號(hào),那上述這段JS代碼在瀏覽器中解釋的時(shí)候會(huì)出現(xiàn)錯(cuò)誤。如何解決這個(gè)問(wèn)題呢?
其基本思路是通過(guò)頁(yè)面上DOM元素的innerHTML屬性將字符串進(jìn)行HTML反轉(zhuǎn)義,然后將值返回給JavaScript的變量。看下面兩段代碼:
1. 原生JavaScript寫(xiě)法:
function htmlDecode(input){ var e = document.createElement('div'); e.innerHTML = input; return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue; } htmlDecode("<img src='myimage.jpg'>");
2. JQuery寫(xiě)法:
function htmlDecode(value){ return $('<div/>').html(value).text(); }
第一個(gè)函數(shù)使用原生的JavaScript方法創(chuàng)建一個(gè)DIV元素,然后將需要反轉(zhuǎn)義的字符串賦值給它的innerHTML屬性,最后返回DIV元素的nodeValue屬性的值。第二個(gè)函數(shù)則使用JQuery的方法,其基本原理和第一個(gè)函數(shù)相同。由于DIV元素都只是在內(nèi)存中創(chuàng)建,并未append或inert到頁(yè)面上,所以不會(huì)對(duì)現(xiàn)有的頁(yè)面產(chǎn)生任何影響。
最后,我們將一開(kāi)始的那段代碼改成下面的這種方式:
var jsonData = { title: $('<div/>').html("<%= data.name? data.name : title %>").text(), desc: $('<div/>').html("<%= data.nontent? data.nontent : '' %>").text(), image: "<%- data.img? data.img : '' %>" };
這樣便可以在JavaScript中對(duì)服務(wù)器端返回的字符串進(jìn)行HTML反轉(zhuǎn)義操作了。
以上這篇在JavaScript中對(duì)HTML進(jìn)行反轉(zhuǎn)義詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- JS及JQuery對(duì)Html內(nèi)容編碼,Html轉(zhuǎn)義
- JS轉(zhuǎn)換HTML轉(zhuǎn)義符的方法
- JS實(shí)現(xiàn)HTML標(biāo)簽轉(zhuǎn)義及反轉(zhuǎn)義
- javascript對(duì)HTML字符轉(zhuǎn)義與反轉(zhuǎn)義
- js處理網(wǎng)頁(yè)編輯器轉(zhuǎn)義、去除轉(zhuǎn)義、去除HTML標(biāo)簽的正則
- 對(duì)字符串進(jìn)行HTML編碼和解碼的JavaScript函數(shù)
- Javascript String對(duì)象擴(kuò)展HTML編碼和解碼的方法
- JavaScript中最簡(jiǎn)潔的編碼html字符串的方法
- JS Html轉(zhuǎn)義和反轉(zhuǎn)義(html編碼和解碼)的實(shí)現(xiàn)與使用方法總結(jié)
相關(guān)文章
js實(shí)現(xiàn)圖片區(qū)域可點(diǎn)擊大小隨意改變(適用移動(dòng)端)代碼實(shí)例
這篇文章主要介紹了js實(shí)現(xiàn)圖片區(qū)域可點(diǎn)擊大小隨意改變(適用移動(dòng)端)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09javascript實(shí)現(xiàn)des解密加密全過(guò)程
這篇文章主要介紹了javascript 實(shí)現(xiàn)des解密加密的過(guò)程,需要的朋友可以參考下2014-04-04原生js提示框并自動(dòng)關(guān)閉(手工關(guān)閉)
今天在寫(xiě)后臺(tái)交互的時(shí)候原來(lái)都是用alert太難看每次都需要點(diǎn)擊一下才可以,比較麻煩所以特整理了幾個(gè)比較好的js提示框代碼,方便提示一下2023-04-04JS實(shí)現(xiàn)支持Ajax驗(yàn)證的表單插件
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)支持Ajax驗(yàn)證的表單插件,感興趣的小伙伴們可以參考一下2016-03-03javascript實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊生成文字特效
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊生成文字特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12