Thalwil: float-Fehler von Firefox/Moz bei "document.write" in floats

In folgendem Beispiel sollten die beiden inneren DIVS leks und rechts nebeneinander 'floaten'. Dies tun sie aber nicht, wenn man im rechten div einen Javascript mit document.write einfügt. Ohne document.write funktioniert alles bestens! Übrigens: weder IE5/Mac, noch SAFARI haben hiermit ein Problem...

  • Kann mir jemand sagen, warum dies passiert? Ist dies ein Fehler von Moz?
  • Wie kann man das Problem mit zusätzlichem Markup lösen (bestehender Markup sollte nicht gelöscht werden, da für Layout nötig)?
  • Gibt es eine CSS-Browserweiche, mit dem man nur Firefox/Mozilla ansprechen kann?

Danke und Gruss...

BEISPIEL-HTML:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head><title>test</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>

<body>
<div style="width:500px;display:table;background-color:#999">

<div style="float:right;width:200px;display:;background-color:red;">
right text here <script type="text/javascript">document.write ()</script>
</div>

<div style="float:left;width:200px;background-color:blue;">
left floated div here
</div>

</div>
</body>
</html>

  1. Hi!

    Der Code wie du ihn schreibst ist ja auch falsch.
    <script>-Tags gehören grundsätzlich in das <head>-Tag rein, und nicht woanders.
    Dementsprechend sollte man auch gänzlich auf die Funktion document.write verzichten und stattdessen das DOM-Modell ausnutzen, mit dem man den Inhalt eines Tags (oder sogar das Tag selbst) verändern kann.
    Einfach mal in SelfHTML nach "innerHTML" suchen!

    Viel Glück!

    Marc Reichelt || http://www.marcreichelt.de/

    --
    Linux is like a wigwam - no windows, no gates and an Apache inside!!!
    SELFCode: ss:| zu:) ls:< fo:# de:> va:} ch:? sh:) n4:( rl:? br:^ js:( ie:% fl:( mo:)
    http://emmanuel.dammerer.at/selfcode.html
    1. Danke für den DOM-Hinweis!

      Falsch ist der Code dennoch nicht, zumindest nach XHTML-1.1 kann ein script-tag auch im body-Bereich vorkommen. Ob dies gut ist ist eine andere Frage.

      Firefox stört sich übrigens nicht am script-Tag, sondern am 'document.write'

      Hi!

      Der Code wie du ihn schreibst ist ja auch falsch.
      <script>-Tags gehören grundsätzlich in das <head>-Tag rein, und nicht woanders.
      Dementsprechend sollte man auch gänzlich auf die Funktion document.write verzichten und stattdessen das DOM-Modell ausnutzen, mit dem man den Inhalt eines Tags (oder sogar das Tag selbst) verändern kann.
      Einfach mal in SelfHTML nach "innerHTML" suchen!

      Viel Glück!

      Marc Reichelt || http://www.marcreichelt.de/

      1. Hi,

        Firefox stört sich übrigens nicht am script-Tag, sondern am 'document.write'

        welchen Code generiert er denn?

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Es geht nicht um den Code, den er generiert: er setzt das Script richtig um ABER ER ZEIGT DEN FLOAT NICHT MEHR RICHTIG AN...

          Hi,

          Firefox stört sich übrigens nicht am script-Tag, sondern am 'document.write'

          welchen Code generiert er denn?

          Cheatah

          1. Hi,

            Es geht nicht um den Code, den er generiert:

            doch, geht es.

            ER ZEIGT DEN FLOAT NICHT MEHR RICHTIG AN...

            Dann wird irgendetwas, das generiert wurde, die Darstellung stören. Warum schreist Du eigentlich so?

            Cheatah

            --
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Es geht nicht um den Code, den er generiert:

              doch, geht es.

              Es ist egal, was durch den Code generiert wird; wesentlich ist, dass document.write vorkommt (ob durch document.write ein Bild oder nur Text eingefügt wird macht keinen Unterschied)

              ER ZEIGT DEN FLOAT NICHT MEHR RICHTIG AN...

              Genauer: der erste float wird *oberhalb* vom Zweiten und nicht *daneben* platziert

              Dann wird irgendetwas, das generiert wurde, die Darstellung stören. Warum schreist Du eigentlich so?

              Sorry, ich wollte nicht schreien, sondern nur das Wesentliche hervorheben. War nicht negativ gemeint... vielen Dank, dass du dir die Mühe genommen hast zu antworten. Wenn du meinen Code in einen Browser lädst, siehst du, was passiert: einmal mit document.write, einmal nur docuemtn.write löschen und alles andere lassen. Beim ersten wird der float falsch, beim zweiten richtig angezeigt...

              Cheatah

  2. Warum display:table?

    Ich weiß zwar auch nicht warum, aber dadurch wird die zusätzliche Zeile erzeugt.
    Ich würde mich mal über die genaue Bedeutung und Konsequenzen von display:table informieren.

    Struppi.