На работе мы наткнулись на то, что Bugzilla создала вывод HTML, который приводил к слишком длинным строкам, потому что браузер не ломал их.
Это происходило в Chrome, но не в Firefox 3.5, поэтому нам было все равно. Но Firefox 4 ведет себя так же, как Chrome, поэтому нам пришлось искать другой обходной путь.
Пример:
<code><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.
Сервер использует только CR в качестве перевода строки, что очень редко, и обычные альтернативы (CR + LF, только LF) работают правильно, поэтому правильный способ исправить это - сказать серверу Bugzilla использовать один из этих разрывов строки методы. Во всяком случае, мне любопытно, почему это
не работает, и игнорирование переносов строк кажется "правильным" способом для браузеров.
Кроме того, я нашел странный локальный обходной путь для Chrome и FF 4 с использованием скрипта Greasemonkey (модифицированная версия эта ):
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?