在IE9中逃避HtmlEntities(使用JavaScript)

时间:2014-05-16 03:34:27

标签: javascript html escaping entities

我有这个功能:

function escapeHtml(input){
    var d = document.createElement("div");
    d.innerHTML = input;
    return d.innerText || d.text || d.textContent;
}

我在FireFox和IE9中测试了这个功能并得到了不同的结果:

火狐:

  1. escapeHtml("http://test.com&")< ==> http://test.com&
  2. escapeHtml("http://test.com>")< ==> http://test.com>
  3. escapeHtml("http://test.com&lt;")&lt; ==&gt; http://test.com<
  4. escapeHtml("http://test.com&quot;")&lt; ==&gt; http://test.com"
  5. escapeHtml("http://test.com&#39;")&lt; ==&gt; http://test.com'
  6. escapeHtml("http://test.com&")&lt; ==&gt; http://test.com&
  7. escapeHtml("http://test.com&abcdef")&lt; ==&gt; http://test.com&abcdef
  8. IE 9

    1. escapeHtml("http://test.com&amp;")&lt; ==&gt; http://test.com&
    2. escapeHtml("http://test.com&gt;")&lt; ==&gt; http://test.com>
    3. escapeHtml("http://test.com&lt;")&lt; ==&gt; http://test.com<
    4. escapeHtml("http://test.com&quot;")&lt; ==&gt; http://test.com"
    5. escapeHtml("http://test.com&#39;")&lt; ==&gt; http://test.com'
    6. escapeHtml("http://test.com&")&lt; ==&gt; http://test.com
    7. escapeHtml("http://test.com&abcdef")&lt; ==&gt; http://test.com
    8. 这意味着

      • escapeHtml在每种情况下均可在Firefox中正常运行1,2,3,4,5,7
      • escapeHtml在案例6,7的IE9中工作不正确,因为它会自动从&字符中剪切字符串。

        1. escapeHtml("http://test.com&")&lt; ==&gt; http://test.com
        2. escapeHtml("http://test.com&abcdef")&lt; ==&gt; http://test.com

      如何更改上面的函数escapeHtml以使其在IE9中像Firefox一样正常工作?

0 个答案:

没有答案