我有这个功能:
function escapeHtml(input){
var d = document.createElement("div");
d.innerHTML = input;
return d.innerText || d.text || d.textContent;
}
我在FireFox和IE9中测试了这个功能并得到了不同的结果:
火狐:
escapeHtml("http://test.com&")
< ==> http://test.com&
escapeHtml("http://test.com>")
< ==> http://test.com>
escapeHtml("http://test.com<")
&lt; ==&gt; http://test.com<
escapeHtml("http://test.com"")
&lt; ==&gt; http://test.com"
escapeHtml("http://test.com'")
&lt; ==&gt; http://test.com'
escapeHtml("http://test.com&")
&lt; ==&gt; http://test.com&
escapeHtml("http://test.com&abcdef")
&lt; ==&gt; http://test.com&abcdef
IE 9
escapeHtml("http://test.com&")
&lt; ==&gt; http://test.com&
escapeHtml("http://test.com>")
&lt; ==&gt; http://test.com>
escapeHtml("http://test.com<")
&lt; ==&gt; http://test.com<
escapeHtml("http://test.com"")
&lt; ==&gt; http://test.com"
escapeHtml("http://test.com'")
&lt; ==&gt; http://test.com'
escapeHtml("http://test.com&")
&lt; ==&gt; http://test.com
escapeHtml("http://test.com&abcdef")
&lt; ==&gt; http://test.com
这意味着
escapeHtml
在每种情况下均可在Firefox中正常运行1,2,3,4,5,7 escapeHtml
在案例6,7的IE9中工作不正确,因为它会自动从&
字符中剪切字符串。
escapeHtml("http://test.com&")
&lt; ==&gt; http://test.com
escapeHtml("http://test.com&abcdef")
&lt; ==&gt; http://test.com
如何更改上面的函数escapeHtml
以使其在IE9中像Firefox一样正常工作?