在工作中,我们偶然发现了 Bugzilla 创建的 HTML 输出导致行太长,因为浏览器没有断行。这发生在 Chrome 上,但不是在 Firefox 3.5 上,所以我们并不在意。但是 Firefox 4 的行为就像 Chrome 一样,所以我们必须找到另一种解决方法。
一个例子是:
<html>
<body>
<pre>
Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
sed diam nonumy eirmod tempor invidunt ut labore et
dolore magna aliquyam erat, sed diam voluptua. At vero eos
et accusam et justo duo dolores et ea rebum. Stet clita kasd
gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
amet.
</pre>
</body>
</html>
服务器仅使用 CR 作为换行符,这种情况很少见,并且通常的替代方法(CR+LF,只有 LF)可以正常工作,因此解决此问题的正确方法是告诉 Bugzilla 服务器使用这些换行符方法之一。无论如何,我很好奇为什么这不起作用并且忽略换行符似乎是浏览器的“正确”方式。
此外,我使用 Greasemonkey 脚本(此脚本的修改版本)为 Chrome 和 FF 4 找到了一个奇怪的本地解决方法:
var els = document.getElementsByTagName("*");
for(var i = 0, l = els.length; i < l; i++) {
var el = els[i];
el.innerHTML = el.innerHTML;
}
似乎这对页面没有影响,但是使用此脚本,换行符突然正确显示。
所以我的问题是:
- Chrome/FF 4 方式是处理内部此类换行符的“正确”方式
<pre>
吗? - 为什么这个 Greasemonkey 脚本有效?