1)可以做沒有做雙逃逸
看起來像你的是更接近htmlEncode()。 如果你不介意使用jQuery
alert(htmlEncode($('#hau').attr('widget')))
function htmlEncode(value){
//create a in-memory div, set it's inner text(which jQuery automatically encodes)
//then grab the encoded contents back out. The div never exists on the page.
return $('<div/>').text(value).html();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="hau" widget="<test>"></div>
如果你有興趣在純香草js的解決方案
alert(htmlEncode(document.getElementById("hau").attributes[1].value))
function htmlEncode(html) {
return document.createElement('a').appendChild(
document.createTextNode(html)).parentNode.innerHTML;
};
<div id="hau" widget="<test>"></div>
2)爲什麼瀏覽器的行爲如何?
僅因爲這種行爲,我們才能夠做一些具體的事情,比如在下面顯示的預填充輸入字段中包含引號,如果插入的唯一方法是不可能的"
是通過將自身添加這又需要與另一個字符轉義像\
<input type='text' value=""You 'should' see the double quotes here"" />