職場で、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 スクリプトが機能するのはなぜですか?