1

テキストをデコードおよびエンコードする簡単で簡単な方法を見つけようとしています。

私が見つけた最高のものは以下です。

  1. 使用しても違い$("<div/>")はありますか?また、divがないのになぜここにあるのですか?

  2. HTML をエンコードおよびデコードする簡単で高速な方法はありますか?

コード:

var myHTMLstring = "<p /> + <br /> sdfsdfdsfdsfsdfsdfsdfsfsfsfdsf";

var myEncoded = $('<div/>').text(myHTMLstring).html();
//&lt;p /&gt; + &lt;br /&gt; sdfsdfdsfdsfsdfsdfsdfsfsfsfdsf


var myDecoded = $('<div/>').html(myEncoded).text();
//<p /> + <br /> sdfsdfdsfdsfsdfsdfsdfsfsfsfdsf
4

1 に答える 1

6

これが機能するのは、jQuerytextメソッドが を使用しcreateTextNode()、特殊文字を HTML エンティティに相当するものに置き換えるからです。その方法1をいじって別の方法を作成することもできますが、とにかく jQuery を使用する場合、使用する方法は適切で迅速です。

1これはプレーンな JavaScript に相当します:

function encode(htmlstr){
   var x = document.createTextNode()
      ,y = document.createElement('div');;
   x.textContent = htmlstr;
   y.appendChild(x);
   return y.innerHTML;
}

function decode(htmlstr){
   var y = document.createElement('div');;
   y.innerHTML = htmlstr;
   return y.innerText || y.textContent;
}

または一度に:

function htmlcode(htmlstr,doDecode){
   var x = document.createTextNode()
      ,y = document.createElement('div');;
   x.textContent = htmlstr;
   if (doDecode) { y.innerHTML = htmlstr; }
   else { y.appendChild(x); }
   return doDecode? (y.innerText || x.textContent) : y.innerHTML;
}

jsfiddle デモ

于 2012-08-12T08:44:23.863 に答える