javascript對HTML字符轉義與反轉義


1.背景:在項目中,經常遇到一些字符需要進行轉義后才能顯示到界面上,如“&”,在界面中顯示的是“&”,在html中書寫“&”,顯示在界面的中的依然是“&”。

    這時候,就需要進行轉義

2.解決方案

<script>
var HtmlUtil = {
        /*1.用瀏覽器內部轉換器實現html轉碼*/
        htmlEncode:function (html){
            //1.首先動態創建一個容器標簽元素,如DIV
            var temp = document.createElement ("div");
            //2.然后將要轉換的字符串設置為這個元素的innerText(ie支持)或者textContent(火狐,google支持)
            (temp.textContent != undefined ) ? (temp.textContent = html) : (temp.innerText = html);
            //3.最后返回這個元素的innerHTML,即得到經過HTML編碼轉換的字符串了
            var output = temp.innerHTML;
            temp = null;
            return output;
        },
        /*2.用瀏覽器內部轉換器實現html解碼*/
        htmlDecode:function (text){
            //1.首先動態創建一個容器標簽元素,如DIV
            var temp = document.createElement("div");
            //2.然后將要轉換的字符串設置為這個元素的innerHTML(ie,火狐,google都支持)
            temp.innerHTML = text;
            //3.最后返回這個元素的innerText(ie支持)或者textContent(火狐,google支持),即得到經過HTML解碼的字符串了。
            var output = temp.innerText || temp.textContent;
            temp = null;
            return output;
        },
        /*3.用正則表達式實現html轉碼*/
        htmlEncodeByRegExp:function (str){  
             var s = "";
             if(str.length == 0) return "";
             s = str.replace(/&/g,"&");
             s = s.replace(/</g,"<");
             s = s.replace(/>/g,">");
             s = s.replace(/ /g," ");
             s = s.replace(/\'/g,"'");
             s = s.replace(/\"/g,""");
             return s;  
       },
       /*4.用正則表達式實現html解碼*/
       htmlDecodeByRegExp:function (str){  
             var s = "";
             if(str.length == 0) return "";
             s = str.replace(/&/g,"&");
             s = s.replace(/</g,"<");
             s = s.replace(/>/g,">");
             s = s.replace(/ /g," ");
             s = s.replace(/'/g,"\'");
             s = s.replace(/"/g,"\"");
             return s;  
       }
    };
</script>

使用方法:HtmlUtil.htmlDecodeByRegExp("&amp;")

參考:

http://blog.csdn.net/u013026207/article/details/53994032

https://www.cnblogs.com/leejersey/p/4568092.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM