在工作中,我們偶然發現了Bugzilla創建的HTML輸出,導致線條太長,因爲瀏覽器沒有打破線條。 這發生在Chrome上,但不是Firefox 3.5上,所以我們並不在乎。但Firefox 4的行爲就像Chrome一樣,所以我們必須找到另一種解決方法。在預標籤內只使用CR作爲linebreak不起作用
一個例子是:
<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服務器使用這些換行方法之一。無論如何,我很好奇爲什麼這個 不起作用,忽略換行符似乎是瀏覽器的「正確」方式。
另外,我發現Chrome和FF 4使用的Greasemonkey腳本,一個陌生的地方解決方法(的this one修改後的版本):
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腳本工作?
是的,Chrome/FF是「正確的」,並符合C和Unix的行爲。 CR(回車)應該回到同一條線 - 就像在舊的打字機時代一樣。除了HTML不允許類型重疊的方式。 ... LF(換行符)使行前進,並且在C/unix/Browsers中,它也重置到行的開頭(與打字機不同)。 ...... AFAIR,Mac出於某種原因將CR視爲換行,這使得它成爲該規則的例外。 – 2011-05-06 20:29:42
@Bock:是的,根據http://en.wikipedia.org/wiki/Newline#Representations – schnaader 2011-05-06 21:43:14
,版本9以及其他一些系統確實使用CR作爲換行符。官方的4.01規範:http:// www.w3.org/TR/html401/struct/text.html#h-9.3。4 – 2014-08-04 10:22:34