在JavaScript中對HTML進(jìn)行反轉(zhuǎn)義詳解
在JavaScript中對字符串進(jìn)行轉(zhuǎn)義和反轉(zhuǎn)義操作,常用的方法莫過于使用encodeURI (decodeURI)、encodeURIComponent (decodeURIComponent)這幾個方法,具體使用方法和區(qū)別。
但是如何在JavaScript中對HTML進(jìn)行反轉(zhuǎn)義操作呢?例如下面這段代碼:
var jsonData = {
title: "<%= data.name? data.name : title %>",
desc: "<%= data.content? data.content : '' %>",
image: "<%- data.img? data.img : '' %>"
};
其中<%= %>包起來的部分是從服務(wù)端返回的值(上例中的代碼取自Node.js中Express的ejs模板的代碼)。如果從服務(wù)端返回的字符串中包含有引號,例如單引號或者雙引號,那上述這段JS代碼在瀏覽器中解釋的時候會出現(xiàn)錯誤。如何解決這個問題呢?
其基本思路是通過頁面上DOM元素的innerHTML屬性將字符串進(jìn)行HTML反轉(zhuǎn)義,然后將值返回給JavaScript的變量??聪旅鎯啥未a:
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();
}
第一個函數(shù)使用原生的JavaScript方法創(chuàng)建一個DIV元素,然后將需要反轉(zhuǎn)義的字符串賦值給它的innerHTML屬性,最后返回DIV元素的nodeValue屬性的值。第二個函數(shù)則使用JQuery的方法,其基本原理和第一個函數(shù)相同。由于DIV元素都只是在內(nèi)存中創(chuàng)建,并未append或inert到頁面上,所以不會對現(xiàn)有的頁面產(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中對服務(wù)器端返回的字符串進(jìn)行HTML反轉(zhuǎn)義操作了。
以上這篇在JavaScript中對HTML進(jìn)行反轉(zhuǎn)義詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- JS及JQuery對Html內(nèi)容編碼,Html轉(zhuǎn)義
- JS轉(zhuǎn)換HTML轉(zhuǎn)義符的方法
- JS實現(xiàn)HTML標(biāo)簽轉(zhuǎn)義及反轉(zhuǎn)義
- javascript對HTML字符轉(zhuǎn)義與反轉(zhuǎn)義
- js處理網(wǎng)頁編輯器轉(zhuǎn)義、去除轉(zhuǎn)義、去除HTML標(biāo)簽的正則
- 對字符串進(jìn)行HTML編碼和解碼的JavaScript函數(shù)
- Javascript String對象擴(kuò)展HTML編碼和解碼的方法
- JavaScript中最簡潔的編碼html字符串的方法
- JS Html轉(zhuǎn)義和反轉(zhuǎn)義(html編碼和解碼)的實現(xiàn)與使用方法總結(jié)
相關(guān)文章
JavaScript參數(shù)個數(shù)可變的函數(shù)舉例說明
JavaScript允許一個函數(shù)傳遞個數(shù)可變的參數(shù),因為有arguments這個內(nèi)置對象,它一個函數(shù)傳遞的所有參數(shù)的數(shù)組2014-10-10
JavaScript實現(xiàn)私有屬性的幾種方式小結(jié)
在JavaScript中,私有屬性是指只能在對象內(nèi)部訪問的屬性,外部無法直接訪問,JavaScript并沒有提供官方的私有屬性的支持,但可以通過一些技巧來模擬實現(xiàn)私有屬性,所以本文給大家總結(jié)了JavaScript實現(xiàn)私有屬性的幾種方式,需要的朋友可以參考下2024-04-04
JavaScript使用concat連接數(shù)組的方法
這篇文章主要介紹了JavaScript使用concat連接數(shù)組的方法,實例分析了javascript中concat函數(shù)操作數(shù)組的技巧,需要的朋友可以參考下2015-04-04
javascript 實現(xiàn)父窗口引用彈出窗口的值的腳本
javascript 實現(xiàn)父窗口引用彈出窗口的值的腳本...2007-08-08
javascript自定義函數(shù)參數(shù)傳遞為字符串格式
本節(jié)主要介紹了通過自定義javascript函數(shù)傳遞參數(shù)為字符串格式的,用this傳遞、引號缺省,示例如下2014-07-07

