如何计算Internet Explorer中的新行?

时间:2010-05-10 23:44:12

标签: javascript css internet-explorer

嘿,大家好。我正在为Javascript和CSS做我自己的语法高亮显示,我遇到了Internet Explorer的问题(大惊喜)。我使用code.blockinnerHTML获取.split("\n")标记的所有内容(下面的示例),结果是自行获取每一行。除了在IE中,这非常有效。

我尝试过使用innerText.split("\r\n")也没有成功。有谁能推荐一个解决方案?如果它有所不同,我的code.block代码的样式为white-space:pre-wrap

<code class="block css">div#randomBarsDemo {
    width:175px;
    height:200px;
}

div#randomBarsDemo div {
    background-color:#111;
    width:100%;
}</code>

2 个答案:

答案 0 :(得分:1)

根据我的研究,除了这个问题之外,你会遇到更多浏览器一致性问题。我的建议是使用下面引用的脚本来修复其他浏览器的所有问题。

http://blog.stevenlevithan.com/archives/cross-browser-split

答案 1 :(得分:0)

到目前为止我发现的最好的东西(至少在Windows IE8中)是从目标元素中获取 innerText ,将\r替换为<br/>,并将其粘贴回 innerHTML

var el = document.getElementById('target');
el.innerHTML = el.innerText.replace(/\r/,"<br/>");

然后,如果您希望以后逐行获取目标,则可以.split() <BR> <BR>。由于Internet Explorer的自动HTML解析, <br/>而非innerText

因此,要直接回答问题,要计算行数,您需要获取\r,并查找\n s,而不是{{1}}。请告诉我这是否解决了您的问题,所以我知道这是帮助人们还是让他们误入歧途。