在JavaScript中對(duì)HTML進(jìn)行反轉(zhuǎn)義詳解
在JavaScript中對(duì)字符串進(jìn)行轉(zhuǎn)義和反轉(zhuǎn)義操作,常用的方法莫過于使用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è)問題呢?
其基本思路是通過頁(yè)面上DOM元素的innerHTML屬性將字符串進(jìn)行HTML反轉(zhuǎn)義,然后將值返回給JavaScript的變量。看下面兩段代碼:
1. 原生JavaScript寫法:
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寫法:
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)生任何影響。
最后,我們將一開始的那段代碼改成下面的這種方式:
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í)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
javascript實(shí)現(xiàn)des解密加密全過程
這篇文章主要介紹了javascript 實(shí)現(xiàn)des解密加密的過程,需要的朋友可以參考下2014-04-04
原生js提示框并自動(dòng)關(guān)閉(手工關(guān)閉)
今天在寫后臺(tái)交互的時(shí)候原來(lái)都是用alert太難看每次都需要點(diǎn)擊一下才可以,比較麻煩所以特整理了幾個(gè)比較好的js提示框代碼,方便提示一下2023-04-04
JS實(shí)現(xiàn)支持Ajax驗(yàn)證的表單插件
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)支持Ajax驗(yàn)證的表單插件,感興趣的小伙伴們可以參考一下2016-03-03
javascript實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊生成文字特效
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊生成文字特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12

