【问题标题】:with <div> whitespaces </div> innerHTML is <div>whitespace</div> in internet explorer, there's a way to get the exact content of a textnode?<div> whitespaces </div> innerHTML 在 Internet Explorer 中是 <div>whitespace</div> ,有没有办法获取文本节点的确切内容?
【发布时间】:2011-10-04 19:27:49
【问题描述】:

如果你试试这个:

var x = document.createElement("div");
x.appendChild(document.createTextNode("    te      st    ");
alert('-->' + x.innerHTML + '<--');

ie6-7-8 会提醒

'te st '

ie9-10等浏览器:

'    te      st    '

有办法修复旧 IE 中的这种行为吗?

谢谢

附言我不想使用

    

【问题讨论】:

  • 该死,我正要抽出pre
  • 我通过 IETester 测试了您的代码,IE6 和 IE7 的警报与 FF 相同:“--> 测试

标签: javascript internet-explorer browser cross-browser


【解决方案1】:

如果未呈现空白(使用&lt;pre&gt; 元素或CSS white-space: pre),则无法在旧版IE 中解决此问题。在这些浏览器中,未渲染的空白字符根本就不是 DOM 的一部分。

【讨论】:

    【解决方案2】:

    试试:

    var x = document.createElement("div");
    x.appendChild(document.createTextNode("    te      st    ".replace(' ','&nbsp;'));
    alert('-->' + x.innerHTML + '<--');
    

    【讨论】:

    • 最好用 .replaceAll(' ', ' ')
    【解决方案3】:

    没有 IE 来测试它,但你试过 x.textContent 吗?

    顺便说一句,当浏览器呈现内容时,这些空白会从浏览器中“剥离”,那么您为什么需要它们呢?

    【讨论】:

    • 我已经尝试过 innerText textContent nodeValue .firstChild.nodeValue .firstChild.data 但无法获取原始字符串...顺便说一句,有其他方法可以做我想做的事情,现在是只是对 Internet Explorer xD 的个人挑战
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 2014-12-01
    • 1970-01-01
    • 2017-12-07
    相关资源
    最近更新 更多