我自製了一個運用node、socket、html的聊天室。
然後我遇到一個麻煩
當客戶端在接收與傳輸訊息時,我是用append將文字貼上,也因此如果有人在裡面輸入程式碼的話,也會被執行,請問該如何清除這個效果呢?
下面是利用 textContent 與 innerHTML 的特性做成 html 特殊字元的轉換
至於函數名稱就沿用 https://www.npmjs.com/package/js-htmlencode 了
function htmlEncode(str)
{
var tmp=document.createElement("div");
tmp.textContent=str;
return tmp.innerHTML;
}
function htmlDecode(str)
{
var tmp=document.createElement("div");
tmp.innerHTML=str;
return tmp.textContent;
}
使用範例
var test_str="<script>alert('hi')</script>";
console.log(htmlEncode(test_str));
//輸出:<script>alert('hi')</script>
console.log(htmlDecode(htmlEncode(test_str)));
//輸出:<script>alert('hi')</script>;