javascript htmlencode函數(ff相容版) 主要是編輯器中反轉html代碼_javascript技巧

來源:互聯網
上載者:User

方法一:

用的瀏覽器內部轉換器實現轉換,要領是動態建立一個容器標籤元素,如DIV,將要轉換的字串設定為這個元素的innerText(ie支援)||textContent(Firefox支援),然後返回這個元素的innerHTML,即得到經過HTML編碼轉換的字串,顯示的時候反過來就可以了(實際上顯示的時候不消通過轉換,直接賦值在div就可以正常顯示的)。

<script type="text/javascript"> function HTMLEncode(html) { var temp = document.createElement ("div"); (temp.textContent != null) ? (temp.textContent = html) : (temp.innerText = html); var output = temp.innerHTML; temp = null; return output; } function HTMLDecode(text) { var temp = document.createElement("div"); temp.innerHTML = text; var output = temp.innerText || temp.textContent; temp = null; return output; } var html = "<br>dffdf<p>qqqqq</p>"; var encodeHTML = HTMLEncode(html); alert("方法一:" +encodeHTML); var decodeHTML = HTMLDecode(encodeHTML); alert("方法一:" +decodeHTML); </script>
[Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]

第二種方法: 正則替換
通過把Regex把<>和空格符轉換成html編碼,由於這種方法不是系統內建的所以很輕易出現有些特別標籤沒有替換的情況,並且效率低下
<script type="text/javascript"> function HTMLEncode2(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,"&quot;"); return s; } function HTMLDecode2(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(/&quot;/g,"\""); return s; } var html = "<br>cccccaaaaa"; var encodeHTML = HTMLEncode2(html); alert("方法二:"+encodeHTML); var decodeHTML = HTMLDecode2(encodeHTML); alert("方法二:"+decodeHTML); </script>
[Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]

大家可以先運行測試下,我也發現了,還是第一種方法比較好用啊,真不錯,大家一定要記住了。
 另外還是一些編輯器使用的一些htmlencode函數,到時候大家根據需要添加,不過需要提醒的是,代碼一定要測試啊,雲棲社區 jb51.net站長發布這條資訊的時候測試確實很麻煩啊,修改了多次
複製代碼 代碼如下:

function HTMLEncode(text){
    text = text.replace(/&/g, "&") ;
    text = text.replace(/"/g, """) ;
    text = text.replace(/</g, "<") ;
    text = text.replace(/>/g, ">") ;
    //text = text.replace(/\ /g," ");
    text = text.replace(/\n/g,"<br>");
    text = text.replace(/\t/g,"    ");
    return text;
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.