Mit nur CR als Zeilenumbruch innerhalb der pre-tag nicht funktioniert

Bei der Arbeit, stolperten wir über Bugzilla erstellen von HTML-Ausgabe, die led-Zeilen viel zu lange, weil der browser nicht brechen die Linien.
Dies geschah auf Chrome, aber nicht Firefox 3.5, so dass wir nicht wirklich kümmern. Aber Firefox 4 ist, verhält sich wie Chrome, also mussten wir finden eine andere Lösung.

Ein Beispiel:

<html>
  <body>
    <pre>
      Lorem ipsum dolor sit amet, consetetur sadipscing elitr,&#013;sed diam nonumy eirmod tempor invidunt ut labore et&#013;dolore magna aliquyam erat, sed diam voluptua. At vero eos&#013;et accusam et justo duo dolores et ea rebum. Stet clita kasd&#013;gubergren, no sea takimata sanctus est Lorem ipsum dolor sit&#013;amet.&#013;
    </pre>
  </body>
</html>

Den der server nur CR als Zeilenumbruch, das ist sehr ungewöhnlich, und die üblichen alternativen (CR+LF nur LF) arbeiten korrekt, so dass der richtige Weg dieses Problem zu beheben ist zu sagen, das Bugzilla-server verwenden Sie eine der folgenden linebreak Methoden. Wie auch immer, ich bin neugierig, warum dieser
funktioniert nicht und ignorieren die Zeilenumbrüche zu sein scheint, den "richtigen" Weg für Browser.

Auch, fand ich eine seltsame lokale workaround für Chrome und FF 4 mit einem Greasemonkey-script (modifizierte version von diese eine):

var els = document.getElementsByTagName("*");
for(var i = 0, l = els.length; i < l; i++) {
  var el = els[i];
  el.innerHTML = el.innerHTML;
}

Es scheint, dies habe keine Auswirkungen auf die Seite, aber mit diesem script, Zeilenumbrüche plötzlich korrekt angezeigt.

Also meine Fragen sind:

  1. Ist die Chrome/FF, 4-Weg die "richtige" Art und Weise zu behandeln, diese Art von Zeilenumbrüche innerhalb <pre>?
  2. Warum ist das Greasemonkey-Skript zu arbeiten?
  • Ja, Chrome/FF der "richtige" ist, und im Einklang mit dem Verhalten von C und Unix. CR (Carriage Return) sollte gehen Sie einfach zurück auf die gleiche Zeile -- genau wie in den alten Schreibmaschine Tage. Außer, dass HTML nicht erlaubt, die Art zu überlappen, dass Art und Weise. ... LF (Line Feed), Fortschritte der Zeile und in der C / unix / Browser, es setzt auch an den Anfang der Zeile (im Gegensatz zu Schreibmaschinen). ... ... ANMUTIGEN, Mac behandelt, die CR als einen Zeilenvorschub aus irgendeinem Grund-so dass es die Ausnahme von der Regel.
  • Ja, MAC OS bis Version 9 und einige andere Systeme verwenden in der Tat CR als einen Zeilenvorschub nach en.wikipedia.org/wiki/Newline#Representations
  • Von offizieller 4.01 pre-spec: w3.org/TR/html401/struct/text.html#h-9.3.4
InformationsquelleAutor schnaader | 2011-05-06
Schreibe einen Kommentar