Andreas Heyer: Firefox und dynamische DOM-Nodes

Hallo Forum,

ich erstelle über Javascript im Firefox dynamische Nodes, die in das Dokument eingehangen werden. Dabei muss ich jedoch feststellen, dass die externen Stylesheets dabei nicht angewandt werden, obwohl ich object.className="css_klasse" und object.setAttribute("class","css_klasse") angebe. Weiterhin existiert kein Style-Attribute bei den neu angelegten Objekten!?

Im Firebug werden die entsprechenden Nodes an der richtigen Stelle angezeigt, jedoch in der blassen Farbe für "unsichtbare" Nodes. Erst wenn ich ein Edit im Firebug durchführe, wird die Node so normal wie alle anderen und auch die Styles werden angewandt.

Ich hatte auch schon den Fall, dass beim manuellen Anhängen von Zeilen an eine Tabelle die Zeilen nicht aufgetaucht sind, obwohl Firebug sie an der richtigen Stelle im DOM anzeigte, jedoch wie erwähnt in der Farbe für "unsichtbar". Mit insertRow/insertCell geht es jedoch ohne Probleme.

Kann mir jemand weiterhelfen?

MfG
Andreas

PS: Das ganze erfolgt nach einer XSL-Transformation. Gibt es dan vielleicht einen Zusammenhang?

  1. Hello out there!

    ich erstelle über Javascript im Firefox dynamische Nodes, die in das Dokument eingehangen werden. Dabei muss ich jedoch feststellen, dass die externen Stylesheets dabei nicht angewandt werden, obwohl ich object.className="css_klasse" und object.setAttribute("class","css_klasse") angebe. Weiterhin existiert kein Style-Attribute bei den neu angelegten Objekten!?

    Die Glaskugel bleibt trübe.

    Ich hatte auch schon den Fall, dass beim manuellen Anhängen von Zeilen an eine Tabelle die Zeilen nicht aufgetaucht sind, obwohl Firebug sie an der richtigen Stelle im DOM anzeigte, jedoch wie erwähnt in der Farbe für "unsichtbar". Mit insertRow/insertCell geht es jedoch ohne Probleme.

    Oh Nostradamus ...

    See ya up the road,
    Gunnar

    --
    „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
    1. Was soll der Unsinn? Wenn du nichts zu sagen hast, dann lass es lieber.
      Für das Nichtanwenden der Styles und das fehlende Style-Attribute weißt du scheinbar auch keine Hilfe, und das mit der Tabelle war überflüssig, weil ich die Rows schon immer in ein *vorhandenes* tbody-Element einhänge. Ist ja nicht jeder ein Depp, gell?

      MfG
      Andreas

      1. Hello out there!

        Was soll der Unsinn?

        Es war Sinn. Du musst ihn nur erkennen.

        Für das Nichtanwenden der Styles und das fehlende Style-Attribute weißt du scheinbar auch keine Hilfe,

        Andere scheinbar auch nicht. Warum, hatte ich dir verlinkt.

        und das mit der Tabelle war überflüssig, weil ich die Rows schon immer in ein *vorhandenes* tbody-Element einhänge.

        Ging das aus deinem Posting hervor? Na also, du hast also keinen Grund, pampig zu werden.

        See ya up the road,
        Gunnar

        --
        „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
        1. Es war Sinn. Du musst ihn nur erkennen.

          Und wo steckte der? Dein Link zur Forums-FAQ ist ja wohl wenig zielführend, oder glaubst du wirklich, ich hätte nicht vorher gesucht? Wenn du einen besseren Überblick hast, dann teile mir bitte relevante Stellen mit!

          Für das Nichtanwenden der Styles und das fehlende Style-Attribute weißt du scheinbar auch keine Hilfe,

          Andere scheinbar auch nicht. Warum, hatte ich dir verlinkt.

          Ähm, wäre es nicht besser gewesen, direkte Links zu solchen Postings anzugeben? Naja, vielleicht war es mein Fehler, nach Fehlern in Englisch zu suchen und dann in einem dt. Forum nachzufragen.

          Ging das aus deinem Posting hervor? Na also, du hast also keinen Grund, pampig zu werden.

          Deine Antwort war trotzdem nicht der Frage angemessen. Wenn überhaupt schreibt man dann so:
          "Das mit dem tbody [LINK] beachtest du auch?"

          MfG
          Andreas

          1. hi,

            Es war Sinn. Du musst ihn nur erkennen.

            Und wo steckte der? Dein Link zur Forums-FAQ ist ja wohl wenig zielführend, oder glaubst du wirklich, ich hätte nicht vorher gesucht?

            Wenn du dem Link mal gefolgt wärst, statt dich nur künstlich aufzuregen, hättest du gemerkt, dass dort beschrieben steht, was wir von einer Problembeschreibung erwarten - z.B. Beispielcode, der das problem nachvollziehbar macht.

            Nur damit lässt sich erkennen, was du gemacht, und im Zweifelsfalle falsch gemacht hast. Blumige Beschreibungen, was du irgendwie gemacht hast, und dass es irgendwie "nicht gefunzt" hat, taugen gar nichts. Ja, sowas sind in meinen Augen "Deppenpostings" ...

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. Wenn du dem Link mal gefolgt wärst, statt dich nur künstlich aufzuregen, hättest du gemerkt, dass dort beschrieben steht, was wir von einer Problembeschreibung erwarten - z.B. Beispielcode, der das problem nachvollziehbar macht.
              Nur damit lässt sich erkennen, was du gemacht, und im Zweifelsfalle falsch gemacht hast. Blumige Beschreibungen, was du irgendwie gemacht hast, und dass es irgendwie "nicht gefunzt" hat, taugen gar nichts. Ja, sowas sind in meinen Augen "Deppenpostings" ...

              Was soll ich euch denn zeigen? Wie ich ein div erstelle und in ein div einhänge? Wie ich eine Zeile mit spans zusammenbaue? Das ist doch nicht das Problem! Sowohl die Developertoolbar, wie auch Firebug und der DOM-Inspektor zeigen mir nach dem Script einen gültigen XHTML-Baum ohne Fehler. Alles befindet sich an seinem Platz, so wie gewünscht.

              Der einzige Unterschied zu schon vorhandenen Elementen scheint zu sein, dass die erzeugten Nodes keinen XHTML-Namespace (Namespace-URI-Eigenschaft) bekommen. Mir ist nicht bekannt, wie man diesen setzen kann. Unabhängig davon ist das fehlende style-Attribut auch verwunderlich. Es fehlt nur bei den via document.createElement() erstellten Nodes.

              MfG
              Andreas

              1. Was ich noch sagen wollte: In Opera 9.22 funktioniert es, IE 7 interpretiert scheinbar keine Scripts, die ihm erst durch die XSL-Tranformation bekannt gemacht werden.

                1. Danke, hat sich erledigt. document.createElementNS brachte den Erfolg.

                  MfG
                  Andreas

                  1. Danke, hat sich erledigt. document.createElementNS brachte den Erfolg.

                    seltsam bei mir ging es bisher immer auch mit createElement(), sowohl externe Stylesheets wurden verwendet, als auch das style attribut waren da. Irgendwas machst du falsch oder anders.

                    Struppi.

                    1. hi,

                      Danke, hat sich erledigt. document.createElementNS brachte den Erfolg.

                      seltsam bei mir ging es bisher immer auch mit createElement(), sowohl externe Stylesheets wurden verwendet, als auch das style attribut waren da. Irgendwas machst du falsch oder anders.

                      Vermutung: Er hat uns verschwiegen, dass er gar nicht auf einem (X)HTML-, sondern einem XML-Dokument operiert(?).

                      gruß,
                      wahsaga

                      --
                      /voodoo.css:
                      #GeorgeWBush { position:absolute; bottom:-6ft; }
                      1. Vermutung: Er hat uns verschwiegen, dass er gar nicht auf einem (X)HTML-, sondern einem XML-Dokument operiert(?).

                        XHTML ist XML!

                        Nun gut, gebe aber zu, dass ich bei dem Hinweis auf XSLT hätte sagen sollen, dass ich XHTML in XHTML tranformiere. Die von Javascript erzeugten Nodes tragen bei createElement keinen Namensraumzusatz, deshalb werden die Elemente (korrekterweise) nicht als XHTML-Element erkannt und deshalb auch nicht gerendert und weisen nicht alle Javascript-Eigenschaften einer richtigen XHTML-Node auf.

                        Sorry noch mal für meine ungenaue Frage, war wohl etwas gefrustet. Immerhin erwies sich Opera als toleranter (oder wertet gar nicht erst XML-NS aus), bei Firefox war ich eigentlich gewöhnt, dass er von den drei Browsern (FF,Opera,IE 7) von Anfang an passende Ergebnisse liefert. Und das macht er ja auch. :-)

                        Es geht jetzt also in FF und Opera, nur der IE 7 will scheinbar nicht den Javascript-Code anerkennen, den das XSLT erzeugt/einfügt. Es scheint mir, dass externe Scriptdateien nicht geladen werden, dann bei darauf aufbauenden Inlinecode kommt dann der Fehler. Gibt es da Erkenntnissse?

                        MfG
                        Andreas

                        1. hi,

                          XHTML ist XML!

                          Ja, aber XHTML wird häufig nicht als XML verarbeitet.

                          gruß,
                          wahsaga

                          --
                          /voodoo.css:
                          #GeorgeWBush { position:absolute; bottom:-6ft; }
                          1. Ja, aber XHTML wird häufig nicht als XML verarbeitet.

                            Ich habe aber XML in XHTML-Form. :-)

                            Ich liefere ein XML-Dokument, welches schon valides XHTML 1.0 Strict ist, als text/xml aus. Die eingebaute Processinginstruction macht dann aus dem reinen Text ein sehenswerte Webseite. Praktisch ein Templatesystem, welches auf dem Client abläuft. Auf dem Server setzt PHP nur die zum Dokument passende Processinginstruction ein.

                            Ich muss sagen, damit läuft das ganze gut auf FF, Opera kann keine Subdokumente mit document('url') im XSLT laden, IE 7 will wiederum in einem anderen Template den Javascriptcode nicht kennen. IE ist kein Problem, weil es sich um ein internes Stylesheet handelt, und ich auf FF ausweichen kann, bei Opera muss ich wohl PHP auf dem Server bemühen, um die Subdaten direkt einzufügen.

                            Wenn Interesse besteht, kann ich ja mal die Adressen meiner Experimente kundtun.

                            MfG
                            Andreas

      2. hi,

        Was soll der Unsinn? Wenn du nichts zu sagen hast, dann lass es lieber.

        Wenn du nicht in der Lage bist, ein Mindestmaß an relevanten Informationen zu liefern, um das problem nachvollziehbar zu machen - dann kannst du es auch lassen.

        Ist ja nicht jeder ein Depp, gell?

        Aber viele benehmen sich wie solche, wenn sie a) ihre sogenannten "Problembeschreibungen" verfassen, und dann noch mehr, wenn sie b) zu recht darauf hingewiesen werden, dass diese nicht mal ansatzweise ausreichend war.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }