2013年3月22日 星期五

jQuery 小祕訣 - htmlentities

有些時候為了避免網頁被植入一些 HTML 標籤(如 <iframe>, <script>, <applet> 等),就必須將一些特殊字元轉為 HTML entities (或稱 HTML 實體),例如 < 可被轉為 &lt; 或是 &#60,其中前者(&lt;)被稱為 entity name, 後者(&#60)為 entity number,這兩種都是可被接受的轉換方式。

更進一步的例子為如下的 HTML 標籤:
<script>&</script>
被轉換成 HTML entities 之後就會變成如下的字串:
&lt;script&gt;&amp;&lt;/script&gt;

雖然在瀏覽器上看起來一樣是 <script>&</script> ,不過已經不是 HTML 標籤了。
p.s. 這對於網頁程式師而言算是相當實務的安全性作法之一

在 PHP 函式裡面有 htmlspecialchars() htmlentities() 兩個函式可以幫助我們進行 HTML 實體的轉換,不過在 Javascript 可能就得花點心思才能夠做到相同的事情,所幸還是可以透過 jQuery 來幫助我們,不需要再重新造輪子。

以下就是 jQuery 的 htmlentities() 的函式:
參考資料
http://www.w3schools.com/html/html_entities.asp
http://www.naveen.com.au/javascript/jquery/encode-or-decode-html-entities-with-jquery/289

沒有留言: