Piere: DOM2 Kompatible Browser - Bitte testen

0 57

DOM2 Kompatible Browser - Bitte testen

Piere
  • javascript
  1. 0
    Florian
  2. 0
    Struppi
    1. 0
      molily
      1. 0
        Struppi
        1. 0
          wahsaga
          1. 0
            Struppi
            1. 0
              Piere
        2. 0
          molily
          1. 0
            molily
          2. 0
            molily
    2. 0
      Piere
      1. 0
        Struppi
        1. 0
          Piere
  3. 0
    molily
    1. 0
      Piere
      1. 0
        Struppi
        1. 0
          Piere
      2. 0
        molily
        1. -1
          Piere
          1. 0
            Ashura
            1. 0
              Piere
              1. 0
                Ashura
                1. 0
                  Piere
                  1. 0
                    Ashura
                    1. 0
                      Piere
                      1. 0
                        Ashura
                        1. 0
                          Piere
                          1. 0
                            Struppi
                            1. 0
                              Piere
                              1. 0
                                molily
            2. 0
              Struppi
              1. 0
                Piere
                1. 0
                  Struppi
                  1. 0
                    Piere
                    1. 0
                      Struppi
              2. 0
                molily
                1. 0
                  Piere
                2. 1
                  Struppi
            3. 0
              Piere
              1. 0
                Piere
              2. 0
                molily
          2. 3
            Tim Tepaße
            1. 0
              Piere
              1. 0
                Tim Tepaße
                1. 0
                  molily
                  1. 1
                    Tim Tepaße
                  2. 0
                    Piere
                2. 0
                  Piere
                  1. 0
                    Thomas Meinike
                    1. 0
                      Piere
                3. 0
                  Piere
            2. 0
              Ashura
          3. 0
            molily
            1. 0
              Piere
      3. 0
        molily
        1. 0
          Struppi

Hallo,

Laut DOM2 W3C Recomendation soll der DOM2 kompatible Broswer das Element "document.documentElement" anbieten.

Nun haben Tests ergeben, dass bisher nur Mozilla dieses Element korrekt implementiert. Alle anderen Browser haben das Attribut zwar auch, allerdings ist es in einem leeren per window.open geöffnetem Dokument (also eins komplett ohne inhalt) nicht verfügbar.

Nach wie vor scheint also Mozilla der einzige echte DOM fähige Browser zu sein.

Wann und ob die anderen Browser das fixen, kann ich nur vermuten. Wenn jemand mehr darüber weiss, dann bitte in diesem Thread posten.

Es geht um diesen Code:

var div = document.createElement( 'div');
  div.appendChild( document.createTextNode( 'foo'));
  var popup = window.open( '', 'bar', '[...]');
  popup.document.documentElement.appendChild( div);

Zum gleich Ausprobieren einfach hier klicken: dom2 test

Es sollte ein Popup durch die Seite geöffnet werden, in dem "foo" zu lesen ist. Wenn "foo" erscheint, dann hat der Browser "documentElement" vollständig eingebaut. Wenn nicht, dann ist der Browser nicht vollständig DOM2 kompatibel.

Schreibt bitte eure ergebisse hier rein (bitte browser-version angeben)

Danke, Piere.

  1. Microsoft Internet Explorer 7.0.5292 Beta 2
    ->Leeres Feld

    Mozilla Firefox 1.5.0.1
    ->foo

  2. Es geht um diesen Code:

    var div = document.createElement( 'div');
      div.appendChild( document.createTextNode( 'foo'));
      var popup = window.open( '', 'bar', '[...]');
      popup.document.documentElement.appendChild( div);

    Ich verstehe nicht, warum du dich Standhaft weigerst, das Element im Fenster zu erzeugen.

    So funktioniert es auch im IE:

    var popup = window.open( '', 'bar', '');
    var div = popup.document.createElement( 'div');
    div.appendChild( popup.document.createTextNode( 'foo'));
    popup.document.documentElement.appendChild( div);

    Aber nicht mehr im OP

    Mit OP 7 läuft's so:

    popup.document.body ?
     popup.document.body.appendChild( div)
    : popup.document.documentElement.appendChild( div)
    ;

    Für den OP 8 hab ich's noch nicht zum laufen gebracht.

    Struppi.

    1. Hallo,

      Mit OP 7 läuft's so:

      popup.document.body ?
      popup.document.body.appendChild( div)
      : popup.document.documentElement.appendChild( div)
      ;

      Für den OP 8 hab ich's noch nicht zum laufen gebracht.

      Ich habe den vorigen Thread nicht gelesen, aber wieso sollte es überhaupt funktionieren?
      Solange man window.open("", "name") macht, ist das Fenster im Opera wirklich leer (im Gegensatz zu about:blank!). Keine Elementknoten vorhanden. Weder ein Wurzelelement noch body. Also müsste man erst ein Wurzelelement mit document.appendChild einfügen.

      Mathias

      1. Solange man window.open("", "name") macht, ist das Fenster im Opera wirklich leer (im Gegensatz zu about:blank!). Keine Elementknoten vorhanden. Weder ein Wurzelelement noch body. Also müsste man erst ein Wurzelelement mit document.appendChild einfügen.

        Wie macht man das?

        Das Problem ist:
        var popup = window.open( '', 'bar', '');
        alert(
        popup.document.documentElement

        • '\n' +
          popup.document
        • '\n' +
          popup.documentElement
        • '\n' +
          popup.body
          );

        Ergibt in OP 8:
        null
        [object HTMLDocument]
        undefined
        undefined

        In allen anderen Browsern (auch OP 7) ist auch document.documentElement definiert, wo man was einhängen kann.

        Struppi.

        1. hi,

          Ergibt in OP 8:
          null
          [object HTMLDocument]

          Also genau an der Stelle, wo molily das Einhängen vorschlug - document - erhältst du doch ein Objekt, mit dem du arbeiten kannst.
          Wo genau liegt das Problem?

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
          1. Ergibt in OP 8:
            null
            [object HTMLDocument]

            Also genau an der Stelle, wo molily das Einhängen vorschlug - document - erhältst du doch ein Objekt, mit dem du arbeiten kannst.
            Wo genau liegt das Problem?

            Das mein OP 8 dort einen Fehler wirft.
            Inline script thread
            Unhandled exception: [Object DOMException]

            Struppi.

            1. Wo genau liegt das Problem?
              ...
              Unhandled exception: [Object DOMException]

              So ist es, da Opera 8 es auf Null setzt.

        2. Solange man window.open("", "name") macht, ist das Fenster im Opera wirklich leer (im Gegensatz zu about:blank!). Keine Elementknoten vorhanden. Weder ein Wurzelelement noch body. Also müsste man erst ein Wurzelelement mit document.appendChild einfügen.

          Wie macht man das?

          Äh, wie meinst du jetzt? Wie gesagt kann man ja document.appendChild verwenden, um ein Wurzelelement einzufügen - zumindest dachte ich das.

          try {  
           var popup = window.open("", "fenster");  
           var doc = popup.document;  
           if (!popup.document.documentElement || !popup.document.body) {  
            var root = doc.createElement("html");  
            var body = doc.createElement("body");  
            root.appendChild(body);  
            alert("append");  
            doc.appendChild(root);  
            alert("end append");  
           }  
           var p_element = doc.createElement("p");  
           p_element.appenChild(doc.createTextNode("Zeug"));  
           doc.body.appendChild(p_element);  
          } catch (e) {  
           alert(e.name + "\n" + e.message);  
          }
          

          Leider löst das doc.appendChild einen HIERARCHY_REQUEST_ERR aus, siehe dazu:
          »Raised if this node is of a type that does not allow children of the type of the newChild node, or if the node to append is one of this node's ancestors or this node itself, or if this node is of type Document and the DOM application attempts to append a second DocumentType or Element node.«
          Der letzte Fall ist wohl ausschlaggebend. Aber warum sollte man kein Element an Document hängen können... Naja, vielleicht ist es dann doch eine widersinnige Regelung im Opera, wenngleich es kein DOM-Verstoß im engeren Sinne ist.

          Mathias

          1. if (!popup.document.documentElement || !popup.document.body) {

            Das sollte && heißen.

          2. doc.appendChild(root);

            Das funktioniert interessanterweise problemlos im Opera 9 TP 2 und Weekly Build 1670 (Unix).

            p_element.appenChild(doc.createTextNode("Zeug"));

            appendChild

            Mathias

    2. Hallo Struppi,

      Ich verstehe nicht, warum du dich Standhaft weigerst, das Element im Fenster zu erzeugen.

      Weil:

      So funktioniert es auch im IE:

      var popup = window.open( '', 'bar', '');
      var div = popup.document.createElement( 'div');
      div.appendChild( popup.document.createTextNode( 'foo'));
      popup.document.documentElement.appendChild( div);

      Ich habe das probiert, bei mir gehts nicht. Ausserdem sollte es egal sein woher das Element kommt um irgedwo angefügt zu werden.

      [...]
      Für den OP 8 hab ich's noch nicht zum laufen gebracht.

      Ich will das auch nicht "zum laufen bringen", also einen Workaround, sondern die allgemeingültige Lösung - das ist das Ziel bei der Sache dass das "zum laufen bringen" aufhört und ein Standard da ist ;)

      Gruss, Piere.

      1. Ich verstehe nicht, warum du dich Standhaft weigerst, das Element im Fenster zu erzeugen.

        Weil:

        So funktioniert es auch im IE:

        var popup = window.open( '', 'bar', '');
        var div = popup.document.createElement( 'div');
        div.appendChild( popup.document.createTextNode( 'foo'));
        popup.document.documentElement.appendChild( div);

        Ich habe das probiert, bei mir gehts nicht. Ausserdem sollte es egal sein woher das Element kommt um irgedwo angefügt zu werden.

        Seltsam, dass es bei allen anderen im IE und FF (und OP 7) geht nur bei dir nicht?

        Du hast auch Mathias Posting gelesen, dass es eben nicht egal ist?
        https://forum.selfhtml.org/?t=124535&m=802641

        [...]
        Für den OP 8 hab ich's noch nicht zum laufen gebracht.

        Ich will das auch nicht "zum laufen bringen", also einen Workaround, sondern die allgemeingültige Lösung - das ist das Ziel bei der Sache dass das "zum laufen bringen" aufhört und ein Standard da ist ;)

        Jo, und so wie es aussieht hält sich OP 8 nicht an den Standard. Wenn es  diesen im zusammenhang überhaupt einen gibt. da window.open() eben kein DOM ist und sich zumindest ein Browser nicht so verhält wie die anderen. Das du im FF ein Element aus einem anderem Fenster in das Popup einfügen kannst, das ist wohl auch kein Standard.

        Struppi.

        1. Ich habe das probiert, bei mir gehts nicht. Ausserdem sollte es egal sein woher das Element kommt um irgedwo angefügt zu werden.

          Seltsam, dass es bei allen anderen im IE und FF (und OP 7) geht nur bei dir nicht?

          ka, vllt hab ich irgendeine olle version von ms. ich verarsche hier niemanden, okay?

          Du hast auch Mathias Posting gelesen, dass es eben nicht egal ist?
          https://forum.selfhtml.org/?t=124535&m=802641

          Habe eben geantwortet auf sein post, liess selbst ;)

          [...]
          Für den OP 8 hab ich's noch nicht zum laufen gebracht.

          Ich will das auch nicht "zum laufen bringen", also einen Workaround, sondern die allgemeingültige Lösung - das ist das Ziel bei der Sache dass das "zum laufen bringen" aufhört und ein Standard da ist ;)

          Jo, und so wie es aussieht hält sich OP 8 nicht an den Standard. Wenn es  diesen im zusammenhang überhaupt einen gibt. da window.open() eben kein DOM ist und sich zumindest ein Browser nicht so verhält wie die anderen. Das du im FF ein Element aus einem anderem Fenster in das Popup einfügen kannst, das ist wohl auch kein Standard.

          window.open ist "Quasi Standard", jeder browser, der JavaScript unterstützt, kann das (von ein paar ganz alten vllt abgesehen)

          Wie geschrieben, DOM2 sagt nimm documentElement wenn du den wurzelknoten ansprechen willst wie einen normalen Knoten.

          Gruss, Piere.

  3. Hallo,

    Nun haben Tests ergeben, dass bisher nur Mozilla dieses Element korrekt implementiert.

    Nein.

    Alle anderen Browser haben das Attribut zwar auch

    Eben.

    allerdings ist es in einem leeren per window.open geöffnetem Dokument (also eins komplett ohne inhalt) nicht verfügbar.

    Wieso sollte es auch?

    Nach wie vor scheint also Mozilla der einzige echte DOM fähige Browser zu sein.

    Das hat überhaupt nichts mit dem DOM zu tun. Ob in einem Dokument eines mit window.open() geöffneten neuen Fensters, das durch die URL »« bezeichnet ist, bereits ein rudimentärer HTML-DOM-Baum vorhanden ist, ist nirgendwo geregelt. Was auch immer ein Browser macht, gegen den DOM-Standard verstößt er nicht.

    Wann und ob die anderen Browser das fixen, kann ich nur vermuten.

    Wahrscheinlich nie, weil es kein Verstoß gegen das DOM ist.

    var div = document.createElement( 'div');
      div.appendChild( document.createTextNode( 'foo'));
      var popup = window.open( '', 'bar', '[...]');
      popup.document.documentElement.appendChild( div);

    Wieso nimmst du selbstverständlich an, dass das Dokument bereits ein Wurzelelement hat?
    Und wie Struppi sagt, du kannst nicht einen Knoten im Kontext des einen Dokuments erzeugen und dann (ohne importNode) in einem anderen einfügen.

    Zum gleich Ausprobieren einfach hier klicken: dom2 test

    Es sollte ein Popup durch die Seite geöffnet werden, in dem "foo" zu lesen ist. Wenn "foo" erscheint, dann hat der Browser "documentElement" vollständig eingebaut. Wenn nicht, dann ist der Browser nicht vollständig DOM2 kompatibel.

    Noch einmal, das hat mit dem W3C DOM nichts zu tun.

    documentElement ist verfügbar, wenn ein Wurzelelementknoten im Dokument verfügbar ist. Jeder Browser, der halbwegs DOM kann, setzt diese Regel korrekt um.

    window.open("", "name") ist aber eine völlig andere Geschichte, die nicht im DOM geregelt ist. Überhaupt entstammt window.open() und der fensterübergreifende Zugriff einer ganz anderen Dimension, nämlich dem bis heute proprietären Netscape JavaScript.

    Mathias

    1. Hallo,

      Nun haben Tests ergeben, dass bisher nur Mozilla dieses Element korrekt implementiert.

      Nein.

      Opera 8.51 nicht, Microsoft Internet Explorer 7.0.5292 Beta 2 nicht,
      IE 6 nicht, und wer weiss welcher noch nicht?

      Alle anderen Browser haben das Attribut zwar auch

      Eben.

      Und?

      allerdings ist es in einem leeren per window.open geöffnetem Dokument (also eins komplett ohne inhalt) nicht verfügbar.

      Wieso sollte es auch?

      Weil es laut DOM2 (Nicht DOM, DOM2 ;) da sein sollte um ua das füllen leerer dokumente zu erleichtern.

      Nach wie vor scheint also Mozilla der einzige echte DOM fähige Browser zu sein.

      Das hat überhaupt nichts mit dem DOM zu tun. Ob in einem Dokument eines mit window.open() geöffneten neuen Fensters, das durch die URL »« bezeichnet ist, bereits ein rudimentärer HTML-DOM-Baum vorhanden ist, ist nirgendwo geregelt. Was auch immer ein Browser macht, gegen den DOM-Standard verstößt er nicht.

      Wie gesagt, DOM2, nicht DOM. Den link dazu findest du im startpost dieses threads.

      Wann und ob die anderen Browser das fixen, kann ich nur vermuten.

      Wahrscheinlich nie, weil es kein Verstoß gegen das DOM ist.

      DOM2, nicht DOM ;)

      var div = document.createElement( 'div');
        div.appendChild( document.createTextNode( 'foo'));
        var popup = window.open( '', 'bar', '[...]');
        popup.document.documentElement.appendChild( div);

      Wieso nimmst du selbstverständlich an, dass das Dokument bereits ein Wurzelelement hat?

      document selbst ist das wurzelelent, allerdings hat man da (warum auch immer) keinen zugriff auf appendChild.

      Und wie Struppi sagt, du kannst nicht einen Knoten im Kontext des einen Dokuments erzeugen und dann (ohne importNode) in einem anderen einfügen.

      Kann ich sehr wohl, das objekt steht nämlich solange es nicht an ein dokument angehängt wird völlig frei (im sinne von: es sind keine abhängikeiten zu dem document vorhanden, über das ich createElement aufrufe)

      createElement ist eine factory-funktion, das sagt dir uU sagt, dass ein object komplett neu generiert wird, ohne irgendeine form der abhängigkeit zu haben.

      Du kannst das ganze aber auch selbst ausprobieren und ein element erzeugen. Dann guckst du nach dem attribut, wo drin sthet zu welchem dokument das gehört und es wird null sein. erst wenn du auch wirklich das element an ein anderes in document oder auch popup.document anhängst, ist das das elterndokument zu finden.

      to it?

      Es sollte ein Popup durch die Seite geöffnet werden, in dem "foo" zu lesen ist. Wenn "foo" erscheint, dann hat der Browser "documentElement" vollständig eingebaut. Wenn nicht, dann ist der Browser nicht vollständig DOM2 kompatibel.

      Noch einmal, das hat mit dem W3C DOM nichts zu tun.

      DOM2, nicht DOM ;)

      documentElement ist verfügbar, wenn ein Wurzelelementknoten im Dokument verfügbar ist. Jeder Browser, der halbwegs DOM kann, setzt diese Regel korrekt um.

      document selbst _ist_ das wurzelelement. aber eben ohne appendChild.

      window.open("", "name") ist aber eine völlig andere Geschichte, die nicht im DOM geregelt ist. Überhaupt entstammt window.open() und der fensterübergreifende Zugriff einer ganz anderen Dimension, nämlich dem bis heute proprietären Netscape JavaScript.

      DOM sagt ja auch nicht wie man ein fenster oder document, es nimmt einfach an, dass es da ist.

      Also, bitte weiter mit den browsern die ihr auf platte habt die seite ausprobieren und das ergebniss hier reinschreiben (version nicht vergessen)

      Danke, Piere.

      1. Du kannst das ganze aber auch selbst ausprobieren und ein element erzeugen. Dann guckst du nach dem attribut, wo drin sthet zu welchem dokument das gehört und es wird null sein. erst wenn du auch wirklich das element an ein anderes in document oder auch popup.document anhängst, ist das das elterndokument zu finden.

        to it?

        Im IE 6 zumindest klappt es so nicht, sondern nur wenn du es auch im entsprechenden Fenster erzeugst (ebenso im OP 7).

        Also, bitte weiter mit den browsern die ihr auf platte habt die seite ausprobieren und das ergebniss hier reinschreiben (version nicht vergessen)

        Das sollte doch jetzt klar sein.

        Struppi.

        1. Du kannst das ganze aber auch selbst ausprobieren und ein element erzeugen. Dann guckst du nach dem attribut, wo drin sthet zu welchem dokument das gehört und es wird null sein. erst wenn du auch wirklich das element an ein anderes in document oder auch popup.document anhängst, ist das das elterndokument zu finden.

          to it?

          Im IE 6 zumindest klappt es so nicht, sondern nur wenn du es auch im entsprechenden Fenster erzeugst (ebenso im OP 7).

          Möglich, aber nicht standard und auch nicht sinnvoll. Ich zitiere mal aus der DOM2 rec:

          ownerDocument: [..]
            When this node is a Document or a DocumentType which is not used with any Document yet, this is null.

          "not used" heisst hier, dass das element (in der rec "Document" genannt) an noch keinem anderem knoten hängt (parentNode also null ist)

          Also, bitte weiter mit den browsern die ihr auf platte habt die seite ausprobieren und das ergebniss hier reinschreiben (version nicht vergessen)
          Das sollte doch jetzt klar sein.

          Ist es leider nicht: Konquerer? MacIE? Andere mir nicht bekannte Browser?

          Gruss, Piere.

      2. Hallo,

        Nach wie vor scheint also Mozilla der einzige echte DOM fähige Browser zu sein.

        Das hat überhaupt nichts mit dem DOM zu tun. Ob in einem Dokument eines mit window.open() geöffneten neuen Fensters, das durch die URL »« bezeichnet ist, bereits ein rudimentärer HTML-DOM-Baum vorhanden ist, ist nirgendwo geregelt. Was auch immer ein Browser macht, gegen den DOM-Standard verstößt er nicht.

        Wie gesagt, DOM2, nicht DOM. Den link dazu findest du im startpost dieses threads.

        Du bist ein Scherzkeks.
        Natürlich sehen DOM Core 2 und 3 documentElement vor. Ja und? Das ändert nichts ander Richtigkeit meiner Aussagen und der Falschheit deiner Behauptungen, DOM fordere dieses Verhalten bei leeren Fenstern.

        Wieso nimmst du selbstverständlich an, dass das Dokument bereits ein Wurzelelement hat?

        document selbst ist das wurzelelent

        Häh?

        Noch einmal, das hat mit dem W3C DOM nichts zu tun.

        DOM2, nicht DOM ;)

        Verarschen kann ich mich selbst.

        documentElement ist verfügbar, wenn ein Wurzelelementknoten im Dokument verfügbar ist. Jeder Browser, der halbwegs DOM kann, setzt diese Regel korrekt um.

        document selbst _ist_ das wurzelelement.

        Das ist Schwachsinn, documentElement liefert das Wurzelelement, das ist in HTML und XHTML das Element mit dem Namen html.

        Ich sehe schon, das bringt hier nichts.

        Mathias

        1. Hallo,

          Leute... Na dann:

          Du bist ein Scherzkeks.

          ...

          Natürlich sehen DOM Core 2 und 3 documentElement vor. Ja und? Das ändert nichts ander Richtigkeit meiner Aussagen und der Falschheit deiner Behauptungen, DOM fordere dieses Verhalten bei leeren Fenstern.

          Gut, dann sagst du halt DOM Core 2, ich sage dazu DOM2.

          Was du hier von dir gegen hast ohne es vorher zu testen, schreibe ich jetzt nicht, das kann nachlesen wer will.

          Falsche Behauptungen stelle _ich_ deswegen aber noch lange nicht auf: Wenn es keine Standardlösung für das Einfügen von Elementen in leere dokumente per DOM2 interface gibt (was durch documentElement möglich sein sollte und in moz auch bestens funktioniert) dann ist der betreffende Browser einfach nicht auf gängige DOM2 Standards ausgelegt.DA müsste doch verständlich sein.

          Um was geht es dir eigentlich? Dass du recht behälts, dass alles so bleibt wie es ist und man für jeden browser alles doppelt und dreifach einbauen muss, oder vllt doch, dass man sich mal auf allgemein funktionierende Lösungen (nicht workarounds, lösungen) einigt? Warum torpedierst du das, was ich hier schreibe? Weil du zu l33t bist und ich zu n00b bin oder was? Weil dann können wir gleich aufhören.

          Wieso nimmst du selbstverständlich an, dass das Dokument bereits ein Wurzelelement hat?

          document selbst ist das wurzelelent

          Häh?

          Lies die specs.

          Noch einmal, das hat mit dem W3C DOM nichts zu tun.

          DOM2, nicht DOM ;)

          Verarschen kann ich mich selbst.

          Lies die specs *bevor* du mir unterstellst ich hätte keine Ahnung. Teste *bevor* du mir sagst, dass es so oder so funktioniert, bzw mache kenntlich, dass du das nur vermutest (zb bei document.appendChild)

          documentElement ist verfügbar, wenn ein Wurzelelementknoten im Dokument verfügbar ist. Jeder Browser, der halbwegs DOM kann, setzt diese Regel korrekt um.

          document selbst _ist_ das wurzelelement.

          Das ist Schwachsinn, documentElement liefert das Wurzelelement, das ist in HTML und XHTML das Element mit dem Namen html.

          Liess die spec. Ich zitiere:

          The Document interface represents the entire HTML or XML document. Conceptually, it is the root of the document tree, and provides the primary access to the document's data.

          Ich sehe schon, das bringt hier nichts.

          Wenn du meinst, dann rate ich dir konsequent zu sein.

          Piere.

          1. Hallo Piere.

            Liess die spec. Ich zitiere:

            The Document interface represents the entire HTML or XML document. Conceptually, it is the root of the document tree, and provides the primary access to the document's data.

            Lerne zu verstehen. Ich übersetze:

            Die Dokumentenschnittstelle repräsentiert das gesamte HTML- oder XML-Dokument. Rein begrifflich gesehen ist es die Wurzel des Dokumenten_baumes_ und stellt die Hauptzugriffsmöglichkeit auf die Daten des Dokumentes dar.

            Ergo:

            Wurzel des Dokumentenbaumes: document
            Wurzel(element) eines (X)HTML-Dokumentes: html

            Einen schönen Montag noch.

            Gruß, Ashura

            --
            sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
            mathbr:del.icio.us/ mathbr:w00t/
            1. Hallo Ashura,

              Liess die spec. Ich zitiere:

              The Document interface represents the entire HTML or XML document. Conceptually, it is the root of the document tree, and provides the primary access to the document's data.

              Lerne zu verstehen.

              Dass ich hier im falschen Forum bin? Kann das sein? Ist nciht böse gemeint, ich frage mich das eben nur im Moment; Nix gegen dich oder gar das Forum slebst und dessen Leser.

              Ich übersetze:

              »»

              Die Dokumentenschnittstelle repräsentiert das gesamte HTML- oder XML-Dokument. Rein begrifflich gesehen ist es die Wurzel des Dokumenten_baumes_ und stellt die Hauptzugriffsmöglichkeit auf die Daten des Dokumentes dar.

              Ich übersetze das nicht anders.

              Ergo:

              Wurzel des Dokumentenbaumes: document
              Wurzel(element) eines (X)HTML-Dokumentes: html

              Den zweiten Schluss kann ich nicht nachvollziehen. Wo steht da, was das Wurzelelement eines xHtml dokumentes sein soll und dass das dann html ist?

              In was für einem Film bin ich hier eigentlich? Ich meine das jetzt wirklich nicht böse, aber kann es sein, dass das SelfHTML Forum tatsächlich mehr für Anfänger ist und ich hier mit meinen Forderungen, Hilfe- und Testwünschen nach Standards völlig an der falschen Adresse bin weil ich damit zu hoch gezielt habe?

              Und bitte schreibt jetzt nicht wieder, was ich noch alles zu lernen habe wenn es um den Kram hier geht, dafür bin ich zu lange dabei.

              Danke, Piere.

              1. Hallo Piere.

                Den zweiten Schluss kann ich nicht nachvollziehen. Wo steht da, was das Wurzelelement eines xHtml dokumentes sein soll und dass das dann html ist?

                So dämlich es auch klingen mag: es ist eben so.

                Auszug aus der XHTML 1.0 Strict DTD:

                <!ELEMENT html (head, body)>

                1. Gibt es kein Element, dass ein Kindelement namens html hat.

                2. Weist der DOCTYPE auf das Wurzelelement hin.
                   Das ist bei HTML: „<!DOCTYPE html PUBLIC …“
                                                ^^^^

                Einen schönen Montag noch.

                Gruß, Ashura

                --
                sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                mathbr:del.icio.us/ mathbr:w00t/
                1. Hallo,

                  Den zweiten Schluss kann ich nicht nachvollziehen. Wo steht da, was das Wurzelelement eines xHtml dokumentes sein soll und dass das dann html ist?

                  So dämlich es auch klingen mag: es ist eben so.

                  Auszug aus der XHTML 1.0 Strict DTD:

                  Was hat das mit dem Teil der DOM2 rec zu tun?

                  1. Hallo Piere.

                    Den zweiten Schluss kann ich nicht nachvollziehen. Wo steht da, was das Wurzelelement eines xHtml dokumentes sein soll und dass das dann html ist?
                    […]

                    Was hat das mit dem Teil der DOM2 rec zu tun?

                    Ebensoviel wie deine Nachfrage, ob html wirklich das Wurzelelement in HTML-Dokumenten sei.

                    Einen schönen Montag noch.

                    Gruß, Ashura

                    --
                    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                    mathbr:del.icio.us/ mathbr:w00t/
                    1. Den zweiten Schluss kann ich nicht nachvollziehen. Wo steht da, was das Wurzelelement eines xHtml dokumentes sein soll und dass das dann html ist?
                      […]

                      Was hat das mit dem Teil der DOM2 rec zu tun?

                      Ebensoviel wie deine Nachfrage, ob html wirklich das Wurzelelement in HTML-Dokumenten sei.

                      ???

                      Weder habe ich das gefragt, noch verstehe ich was du damit meinst. Und warum löscht du das, um was es ging? Willst du mich für dumm verkaufen?

                      Typen gibt es, unglaublich.

                      1. Hallo Piere.

                        Weder habe ich das gefragt, noch verstehe ich was du damit meinst.

                        Gut, ich sage es dir: nichts. Dass das html-Element das Wurzelelement in HTML-Dokumenten ist, hat rein gar nichts mit DOM zu tun. Ich wollte dir nur die Quelle meiner Aussage nachreichen.

                        Und warum löscht du das, um was es ging?

                        Ich lösche all das aus dem Zitat, worauf ich mich nicht beziehe.
                        (Siehe http://www.stud.tu-ilmenau.de/~thla-in/selfhtml.de/netiquette/#quote)

                        Einen schönen Montag noch.

                        Gruß, Ashura

                        --
                        sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                        mathbr:del.icio.us/ mathbr:w00t/
                        1. Dann danke fürs nachreichen, es wird hoffentlich einem Leser nützlich sein.

                          Eines möchte ich aber noch richtigstellen, wenn du es schon nciht machst:

                          Ebensoviel wie deine Nachfrage, ob html wirklich das Wurzelelement in HTML-Dokumenten sei.

                          Das habe ich nie "Nachgefragt"

                          Und wenn du das in:

                          Den zweiten Schluss kann ich nicht nachvollziehen. Wo steht da, was das Wurzelelement eines xHtml dokumentes sein soll und dass das dann html ist?

                          gelesen haben solltest, dann... na dann weiss ich auch nichtmehr weiter.

                          Nix für ungut, Piere.

                          1. Eines möchte ich aber noch richtigstellen, wenn du es schon nciht machst:

                            Ebensoviel wie deine Nachfrage, ob html wirklich das Wurzelelement in HTML-Dokumenten sei.

                            Das habe ich nie "Nachgefragt"

                            Und wenn du das in:

                            Den zweiten Schluss kann ich nicht nachvollziehen. Wo steht da, was das Wurzelelement eines xHtml dokumentes sein soll und dass das dann html ist?

                            gelesen haben solltest, dann... na dann weiss ich auch nichtmehr weiter.

                            Ich verstehe das genauso, du hast nachgefragt wo steht, dass html das Wurzelelement eines (x)html Dokumentes ist. Was hast du stattdessen gemeint?

                            Struppi.

                            1. Guten Morgen,

                              Ebensoviel wie deine Nachfrage, ob html wirklich das Wurzelelement in HTML-Dokumenten sei.
                              »»
                              Das habe ich nie "Nachgefragt"

                              Und wenn du das in:

                              Den zweiten Schluss kann ich nicht nachvollziehen. Wo steht da, was das Wurzelelement eines xHtml dokumentes sein soll und dass das dann html ist?

                              gelesen haben solltest, dann... na dann weiss ich auch nichtmehr weiter.

                              Ich verstehe das genauso, du hast nachgefragt wo steht, dass html das Wurzelelement eines (x)html Dokumentes ist. Was hast du stattdessen gemeint?

                              Ich werd versuchen, das zu erklären: Ich habe gefragt, wo in _diesem_ Text (die dom2rec) etwas über das Wurzelelement eines xHMTL Dokumentes steht. Dann habe ich noch angefügt, dass ich ebenso wissen möchte, wo in _diesem_ Dokument steht _dass_ das Wurzelelement von xHTML dann html _ist_. Der angefügte Teil schliesst also in keiner Weise aus, dass dem nicht so sei. Die Frage bezieht sich _eindeutig_ nicht auf den Wahrheitsgehalt von html als Wurzelelement von xHTML, sondern auf die Position dieses Sachverhaltes im Text (der dom2rec) Jeder, der etwas von Deutsch versteht, wird das bestätigen.

                              Gruss, Piere.

                              1. Hallo,

                                Ich habe gefragt, wo in _diesem_ Text (die dom2rec) etwas über das Wurzelelement eines xHMTL Dokumentes steht.

                                In DOM Core steht dazu nichts. DOM ist auf alle XML-Sprachen anwendbar, also wird dort nichts speziell zu (X)HTML stehen.

                                Dann habe ich noch angefügt, dass ich ebenso wissen möchte, wo in _diesem_ Dokument steht _dass_ das Wurzelelement von xHTML dann html _ist_.

                                DOM HTML ist dafür zuständig.
                                »Root of an HTML document. See the HTML element definition in HTML 4.01.«

                                Mathias

            2. Ergo:

              Wurzel des Dokumentenbaumes: document
              Wurzel(element) eines (X)HTML-Dokumentes: html

              und damit ist zumindest eine weitere Möglichkeit gefunden:

                
                
               var popup = window.open("", "x");  
               popup.document.open();  
               popup.document.write('<html></html>');  
               popup.document.close();  
                
               var doc = popup.document;  
               var p_element = doc.createElement("p");  
               p_element.appendChild(doc.createTextNode("Zeug"));  
               doc.body ?  
               doc.body.appendChild(p_element)  
               :  
               doc.documentElement.appendChild(p_element)  
               ;  
              
              

              Läuft jetzt zumindest auf allen Browsern die ich hier habe
              FF 1.5.01
              MZ 1.7.5
              OP 7.21
              OP 8.01
              IE 6 (SP2)
              alles WinXP

              Struppi.

              1. Hey Struppi,

                und damit ist zumindest eine weitere Möglichkeit gefunden:

                {...}

                Läuft jetzt zumindest auf allen Browsern die ich hier habe
                FF 1.5.01
                MZ 1.7.5
                OP 7.21
                OP 8.01
                IE 6 (SP2)
                alles WinXP

                Das wäre ein Workaround auf den ich mich noch einlassen kann, wenn das ohne die doc.body abfrage geht.

                Trotzdem müsste es auch ohne gehen, stichwort redundanz.

                Gruss, Piere.

                1. Das wäre ein Workaround auf den ich mich noch einlassen kann, wenn das ohne die doc.body abfrage geht.

                  Nicht im IE 6, das passiert gar nichts auch kein Fehler.

                  Trotzdem müsste es auch ohne gehen, stichwort redundanz.

                  Das das DOM in keinem Browser 100% umgesetzt ist ist ja nichts neues, und da der IE nun auch schon älter ist, wirst du mit der evtl. falschen Umsetzung Leben müssen.

                  Und noch mal auf document.createElement zurückzukommen - ich les tatsächlich ungern Specs - aber da steht:
                  Since elements, text nodes, comments, processing instructions, etc. cannot exist outside the context of a Document, the Document interface also contains the factory methods needed to create these objects. The Node objects created have a ownerDocument attribute which associates them with the Document within whose context they were created.

                  Es besteht also ein zusammenhang zum Fenster bzw. document und dem erzeugten Objekt. soweit ich das sehe kann nur FF Elemente aus einem anderen Dokument in fremde Dokumente importieren (OP 8 macht es genauso wie der IE nicht)

                  Struppi.

                  1. Hi Struppi,

                    The Node objects created have a ownerDocument attribute which associates them with the Document within whose context they were created.

                    created meint in dem fall "im browser dargestellt" oder auch "an einen anderen node drangehangen"

                    Weil:

                    node.ownerDocument: The Document object associated with this node. This is also the Document object used to create new nodes. When this node is a Document or a DocumentType which is not used with any Document yet, this is null.

                    Der letzte Satz meint, dass ownerDocument null ist wenn der node an noch keinem anderem hängt.

                    Gruss, Piere.

                    1. node.ownerDocument: The Document object associated with this node. This is also the Document object used to create new nodes. When this node is a Document or a DocumentType which is not used with any Document yet, this is null.

                      Der letzte Satz meint, dass ownerDocument null ist wenn der node an noch keinem anderem hängt.

                      Mir scheint's deine Übersetzungen sind nicht so astrein. Ich les daraus eher, wenn der Knoten ein Document ist oder von einem unbenutzem Type ist ownerDocument null.  Ich kann mich auch irren, mein Englisch ist nicht perfekt.

                      Aber du kannst es ja überprüfen:

                      var popup = window.open("", "x");

                      var p = popup.document.createElement("p");
                      var p_2 = document.createElement("p");

                      alert( p.ownerDocument + '\n' +  p_2.ownerDocument );

                      beide sind nicht null.

                      Struppi.

              2. var popup = window.open("", "x");
                popup.document.open();
                popup.document.write('<html></html>');
                popup.document.close();

                var doc = popup.document;
                var p_element = doc.createElement("p");
                p_element.appendChild(doc.createTextNode("Zeug"));
                doc.body ?
                doc.body.appendChild(p_element)
                :
                doc.documentElement.appendChild(p_element)
                ;

                  
                Was sprach nochmal dagegen, <html><body></body></html> ins Fenster zu schreiben und dann direkt mit doc.body zu arbeiten? Wieso sollte man p-Elemente an html anhängen?  
                  
                Mathias
                
                1. Was sprach nochmal dagegen, <html><body></body></html> ins Fenster zu schreiben und dann direkt mit doc.body zu arbeiten? Wieso sollte man p-Elemente an html anhängen?

                  Warum sollte man es nicht tun, wäre die bessere Frage. Aber zu testzwecken ist das doch okay, oder nicht?

                  Piere.

                2. [...]

                  Was sprach nochmal dagegen, <html><body></body></html> ins Fenster zu schreiben und dann direkt mit doc.body zu arbeiten? Wieso sollte man p-Elemente an html anhängen?

                  Das hatte ich sogar probiert, aber irgendwo auf dem Weg ist es verloren gegangen.

                    
                    
                  var popup = window.open("", "x");  
                  popup.document.open();  
                  popup.document.write('<html><body></body></html>');  
                  popup.document.close();  
                    
                  var doc = popup.document;  
                  var p_element = doc.createElement("p");  
                  p_element.appendChild(doc.createTextNode("Zeug"));  
                  doc.body.appendChild(p_element)  
                  
                  

                  und jeder ist zufrieden.

                  Struppi.

            3. Post gelöscht?

              1. nö, doch nicht... frags mich aber immer noch.

                Na egal, hab ja eine Richtung, die ich wohl morgen früh ausprobieren werde.

                Gruss, Piere.

              2. Post gelöscht?

                Was auch immer du damit sagen willst, in diesem Thread wurden keine Postings gelöscht.

                Mathias

          2. Hallo Piere,

            Du sitzt gerade meiner Meinung nach zwei grundsätzlichen Missverständnissen auf:

            Wenn es keine Standardlösung für das Einfügen von Elementen in leere dokumente per DOM2 interface gibt (was durch documentElement möglich sein sollte und in moz auch bestens funktioniert) dann ist der betreffende Browser einfach nicht auf gängige DOM2 Standards ausgelegt.DA müsste doch verständlich sein.

            Hier setzt Du voraus, dass bei Deinem mittels Popup geöffneten neuem Fenster ohne Inhalt schon ein »leeres Dokument« vorhanden ist. Ist es aber nicht. Alles was dort geöffnet ist, ist ein Viewport des Browsers. Der Viewport weiss aber noch nicht, was er enthalten soll, entweder ein HTML- oder XML-Dokument. Dann wäre ein Ansprechen über document natürlich sinnvoll. Aber der Viewport kann auch wunderbar eine Grafik enthalten, JPG, PNG, whatever. Oder ein Flashmovie. Oder ein sonstiger Film. Oder ein PDF. Oder was der Browser auch immer darstellen kann. Nur ein Popup zu öffnen sagt dem Browser nicht, dass in dem Popup auch ein XML-Dokument vorhanden zu sein hat, dass dann Zugriff auf dessen DOM bieten muss.

            document selbst ist das wurzelelent
            Häh?
            Lies die specs.

            Hier verwechselst Du das Wurzelelement eines XML-Dokumentes mit der Wurzel des XML-Dokumentes selber.

            Ein XML-Dokument besteht ja nicht nur aus <html> oder <feed> oder <rss>, dies sollen nur Beispiele für Wurzelelemente (»root element«) verschiedener XML-Dokumente sein. Ein XML-Dokument kann auf der obersten Ebene verschiedene Elemente besitzen:

            • XML Deklaration
            • Dokumententyp
            • Kommentare
            • Processing Instructions

            Das DOM soll aber nicht unbedingt jeden Kleinscheiss der XML-Syntax behandeln, sondern nur das, was für XML als Datenstruktur - nicht als Text - sinnvoll ist. Deswegen bietet es auch auf der obersten Ebene dafür keine Interfaces wie die Knoten auf unteren Ebenen. Die wichtigen Informationen werden in Attribute verpackt, damit man einen Zugriff hat, aber ansonsten ist es abstrahiert. Trotzdem gibt es den Unterschied zwischen XML-Dokument als ganzem - das ist nämlich document - und im XML-Dokument enthaltenen Elementbaum - diese beginnen beim Wurzelelement.

            Tim

            1. Hallo Piere,

              Du sitzt gerade meiner Meinung nach zwei grundsätzlichen Missverständnissen auf:

              Wenn es keine Standardlösung für das Einfügen von Elementen in leere dokumente per DOM2 interface gibt (was durch documentElement möglich sein sollte und in moz auch bestens funktioniert) dann ist der betreffende Browser einfach nicht auf gängige DOM2 Standards ausgelegt.DA müsste doch verständlich sein.

              Hier setzt Du voraus, dass bei Deinem mittels Popup geöffneten neuem Fenster ohne Inhalt schon ein »leeres Dokument« vorhanden ist. Ist es aber nicht. Alles was dort geöffnet ist, ist ein Viewport des Browsers. [...]

              Das erklärt zumindest warum das so ist, daran habe ich nicht gedacht.

              Es erklaärt aber nicht, ob es so sein muss, denn: Sobald ich per documentElement was einfüge, würde klar sein, dass ich kein bild öffnen will.

              Aber vllt gibt es ja über die dokumententype eine lösung.

              Danke dir für die Richtung :)

              document selbst ist das wurzelelent
              Häh?
              Lies die specs.

              Hier verwechselst Du das Wurzelelement eines XML-Dokumentes mit der Wurzel des XML-Dokumentes selber.

              Nein, wenn dann habe ich das nicht genau beschrieben: Mir ist schon klar, dass document vergleichbar mit einem handler ist, und das die eigentliche XML Wurzel (html, feed, rss, uws) innerhalb diesem zu finden ist.

              Danke trotzdem.

              Piere.

              1. Hallo,

                Das erklärt zumindest warum das so ist, daran habe ich nicht gedacht.

                Molily versuchte gerade schon, Dir diese Einsicht nahe zu bringen.

                Es erklaärt aber nicht, ob es so sein muss, denn: Sobald ich per documentElement was einfüge, würde klar sein, dass ich kein bild öffnen will.

                Nur bei einem sehr mitdenkenden Browser. Ich versuche es mal anders zu erklären. Wenn Du Dein vollkommen leeres Popup öffnest, hast Du diese Baumstruktur:

                window
                |

                Wenn aber per documentElement etwas einfügen willst, dann willst Du hinterher diese Baumstruktur haben:

                window
                |
                •-- document
                    |
                    •-- documentElement

                Der mitdenkende Browser müsste also bei diesem Deinem Statement ...

                popup.document.documentElement = irgendwas;

                ... schon einen document-Knoten mit erstellen. Wieso sollte er aber? Für den Browser weisst Du einem nicht existierenden Attribut (documentElement) eines nicht existenten Objektes (document) etwas zu. Klar, es wäre nett, aber das Ding ist immer noch eine Maschine. Und die unterschiedlichen DOM-Spezifikationen sagen nichts über ein Kristallkugel-Verhalten von Browsern voraus. ;)

                Du willst – aus war für Gründen auch immer – in einem Popup testen, ob die DOM-Repräsentation des darin enthaltene leere Dokuments das Attribut documentElement hat. Meine bequeme Lösung wäre es, einfach im Popup ein leeres Dokument zu öffnen. Ähnlich geschieht das auch mit Struppis document.write, man schreibt einfach das leere Dokument rein, für mich ist das aber zu viel Kristallkugel.

                Konsequenter im Sinne des DOMs wäre wohl dieser Ansatz:

                // Popup öffnen, popup bezeichnet hier das nirgendwo in DOM standardisierte window-Objekt  
                var popup = window.open( '', 'bar', '[...]');  
                  
                // In dem Popup ein HTML-Dokument erstellen.  
                popup.document = new HTMLDocument();  
                  
                // In diesem Dokument den Div-Knoten erstellen und einfügen  
                var div = popup.document.createElement( 'div');  
                div.appendChild(popup.document.createTextNode( 'foo'));  
                popup.document.documentElement.appendChild( div);
                

                Ist aber aus Faulheit ungetesteter Code. ;)

                Nein, wenn dann habe ich das nicht genau beschrieben: Mir ist schon klar, dass document vergleichbar mit einem handler ist, und das die eigentliche XML Wurzel (html, feed, rss, uws) innerhalb diesem zu finden ist.

                Wurzelelement. Wurzelelement. Wurzelelement. Da gibt es einiges an Begriffsverwirrung, weil - stellt man sich ein gedankliches XML-Dokument als Baum vor, dann sieht das ungefähr so aus:

                /--•
                   |
                   •-- Prolog
                   |
                   •-- Wurzelelement
                   |
                   •-- Sonstiges

                Es gibt also eine konzeptionelle, gedankliche Wurzel, die kein Element ist. Der Vergleich mit "/" in unixoiden Datensystem liegt nahe. Ich würde diesen Sprachgebrauch vorschlagen, um Verwirrungen zu vermeiden: Dokument bezeichnet diese konzeptionelle Wurzel, das Wurzelelement – das oberste Element eines XMl-Dokumentes und das einzige Element auf dieser Ebene – wird nur noch als Wurzelelement bezeichnet.

                Tim

                1. Konsequenter im Sinne des DOMs wäre wohl dieser Ansatz:

                  // Popup öffnen, popup bezeichnet hier das nirgendwo in DOM standardisierte window-Objekt

                  var popup = window.open( '', 'bar', '[...]');

                  // In dem Popup ein HTML-Dokument erstellen.
                  popup.document = new HTMLDocument();

                    
                  Du suchst `document.implementation.createDocument("http://www.w3.org/1999/xhtml", "html", null)`{:.language-javascript} ;)  
                    
                  
                  > ~~~javascript
                  
                  // In diesem Dokument den Div-Knoten erstellen und einfügen  
                  
                  > var div = popup.document.createElement( 'div');  
                  > div.appendChild(popup.document.createTextNode( 'foo'));  
                  > popup.document.documentElement.appendChild( div);
                  
                  

                  Das würde nicht gehen, weil dem jungfräulichen Dokument das html-Wurzelelement fehlt und somit documentElement nicht gesetzt wäre. Das ist ja gerade das Problem: Man könnte es zwar auch mit createElement erzeugen, aber wie gesagt ist document.appendChild nicht erlaubt. Aus der Sackgasse kenne ich keinen Ausweg.

                  Mathias

                  1. Hallo Mathias,

                    Du suchst document.implementation.createDocument("http://www.w3.org/1999/xhtml", "html", null) ;)

                    Das kommt davon, wenn man die obskuren Stellen in den Specs überliest. ;)

                    Was spricht denn gegen das hier?

                    doctype = document.implementation.createDocumentType("xhtml",  
                                  "-//W3C//DTD XHTML 1.0 Strict//EN",  
                                  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd")  
                    HtmlDoc = document.implementation.createDocument("http://www.w3.org/1999/xhtml", "html", doctype);
                    

                    Gute UAs sollten dann wohl ein HTMLDocument zurück liefern, wenn sie das kennen. Sollten sie zumindest. Hofft man. Zumindest hoffe ich darauf, wenn ich das hier in DOM 3 Core lese:

                    createDocument introduced in DOM Level 2
                      Creates a DOM Document object of the specified type with its document element.
                      Note that based on the DocumentType given to create the document, the
                      implementation may instantiate specialized Document objects that support
                      additional features than the "Core", such as "HTML" [DOM Level 2 HTML]. On the
                      other hand, setting the DocumentType after the document was created makes this
                      very unlikely to happen. Alternatively, specialized Document creation methods,
                      such as createHTMLDocument [DOM Level 2 HTML], can be used to obtain specific
                      types of Document objects.

                    Ok, ok, may. Und createHTMLDocument muss man sich wohl auch selber basteln, DOM 2 HTML sagt dazu nix.

                    Das würde nicht gehen, weil dem jungfräulichen Dokument das html-Wurzelelement fehlt und somit documentElement nicht gesetzt wäre.

                    Wenn es sich um ein HTMLDocument handelt, wäre es irgendwie sehr doof, nicht anzunehmen, dass das Wurzelelement nicht html:html wäre. Aber ich kann eine gewisse Faulheit bei DOM-Implementeuren da verstehen.

                    Tim

                  2. Du suchst document.implementation.createDocument("http://www.w3.org/1999/xhtml", "html", null) ;)

                    Noch besser :)

                    Und das hier:

                    doctype = document.implementation.createDocumentType("xhtml",

                    "-//W3C//DTD XHTML 1.0 Strict//EN",
                                  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd")
                    HtmlDoc = document.implementation.createDocument("http://www.w3.org/1999/xhtml", "html", doctype);

                      
                    ist ultimativ.  
                      
                    Danke, danke, danke.  
                      
                    
                    > > popup.document.documentElement.appendChild( div);  
                    >   
                    > Das ist ja gerade das Problem: Man könnte es zwar auch mit createElement erzeugen, aber wie gesagt ist document.appendChild nicht erlaubt. Aus der Sackgasse kenne ich keinen Ausweg.  
                      
                    Und ab da sage ich: Nicht Standardgerechter Browser. Mozilla machts, also ist es möglich (warum eigentlich auch nicht?)  
                      
                    Aber ich werde das alles morgen nochmal testen.  
                      
                    Ich danke euch sehr.  
                      
                    Gute Nacht, Piere.
                    
                2. Hallo,

                  Molily versuchte gerade schon, Dir diese Einsicht nahe zu bringen.

                  Und?

                  Es erklaärt aber nicht, ob es so sein muss, denn: Sobald ich per documentElement was einfüge, würde klar sein, dass ich kein bild öffnen will.

                  Nur bei einem sehr mitdenkenden Browser. Ich versuche es mal anders zu erklären. Wenn Du Dein vollkommen leeres Popup öffnest, hast Du diese Baumstruktur:

                  window
                  |

                  Wenn aber per documentElement etwas einfügen willst, dann willst Du hinterher diese Baumstruktur haben:

                  window
                  |
                  •-- document
                      |
                      •-- documentElement

                  Der mitdenkende Browser müsste also bei diesem Deinem Statement ...

                  popup.document.documentElement = irgendwas;

                  ... schon einen document-Knoten mit erstellen. Wieso sollte er aber?

                  popup.document ist schon da. das ist immer da. Das:

                  Für den Browser weisst Du einem nicht existierenden Attribut (documentElement) eines nicht existenten Objektes (document) etwas zu.

                  stimmt also nicht ganz.

                  Klar, es wäre nett, aber das Ding ist immer noch eine Maschine. Und die unterschiedlichen DOM-Spezifikationen sagen nichts über ein Kristallkugel-Verhalten von Browsern voraus. ;)

                  Ist mir klar.

                  Ich möchte lediglich dass popup.document.documentElement.appendChild() in jedem Browser funktioniert. Dass das geht, macht Moz vor. Und, mir ist auch klar, dass ich mit dieser Forderung hier am falschen Platz bin.

                  Konsequenter im Sinne des DOMs wäre wohl dieser Ansatz:

                  // Popup öffnen, popup bezeichnet hier das nirgendwo in DOM standardisierte window-Objekt

                  var popup = window.open( '', 'bar', '[...]');

                  // In dem Popup ein HTML-Dokument erstellen.
                  popup.document = new HTMLDocument();

                  // In diesem Dokument den Div-Knoten erstellen und einfügen
                  var div = popup.document.createElement( 'div');
                  div.appendChild(popup.document.createTextNode( 'foo'));
                  popup.document.documentElement.appendChild( div);

                  
                  >   
                  > Ist aber aus Faulheit ungetesteter Code. ;)  
                    
                  Sicher, Faulheit. Dass ich Beleidungen nicht mag, hatte ich ja schon mehrfach erwähnt.  
                    
                  Trotzdem: Dass dieses Objekt überhaupt existiert, wusste ich nicht. Ich werde das ausprobieren, danke.  
                    
                  Piere.
                  
                  1. Hallo,

                    Ich möchte lediglich dass popup.document.documentElement.appendChild() in jedem Browser funktioniert. Dass das geht, macht Moz vor.

                    Da wird wohl etwas getrickst: FF 1.5.0.1 schreibt automatisch in ein leeres Fenster:

                      
                    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title></title></head><body></body></html>
                    

                    Klar, dass nun auch ein documentElement praesent ist.

                    MfG, Thomas

                    1. Da wird wohl etwas getrickst: FF 1.5.0.1 schreibt automatisch in ein leeres Fenster:

                      Dachte ich auch.

                3. Sry, hast mich ja gar nicht beleidig. es ist spät, etschuldige bitte.

            2. Hallo Tim.

              Aber der Viewport kann auch wunderbar eine Grafik enthalten, JPG, PNG, whatever. Oder ein Flashmovie. Oder ein sonstiger Film. Oder ein PDF. Oder was der Browser auch immer darstellen kann. Nur ein Popup zu öffnen sagt dem Browser nicht, dass in dem Popup auch ein XML-Dokument vorhanden zu sein hat, dass dann Zugriff auf dessen DOM bieten muss.

              Interessant ist in diesem Zusammenhang aber auch, was die Browser tatsächlich machen, wenn man eine nicht-HTML-Ressource aufruft. (Ich weiß, Thomas Meinike hatte dahingehend schon eine Anmerkung gemacht.)

              Einen schönen Montag noch.

              Gruß, Ashura

              --
              sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
              mathbr:del.icio.us/ mathbr:w00t/
          3. Um was geht es dir eigentlich? Dass du recht behälts, dass alles so bleibt wie es ist und man für jeden browser alles doppelt und dreifach einbauen muss, oder vllt doch, dass man sich mal auf allgemein funktionierende Lösungen (nicht workarounds, lösungen) einigt?

            document.write() ist die allgemein funktionierende Lösung, um im Fenster erst einmal gleiche Voraussetzungen zu schaffen. Ich sehe tatsächlich nicht, wo das Problem liegt.

            The Document interface represents the entire HTML or XML document. Conceptually, it is the root of the document tree, and provides the primary access to the document's data.

            Ich rede die ganze Zeit vom Wurzelelement (ein Terminus aus XML), du vom Wurzelknoten (ein Terminus aus DOM Core). document ist ein Knoten, der Wurzelknoten eben, aber kein Element. html ist ein Element, das Wurzelelement eben, und gleichzeitig ein Knoten.

            Mathias

            1. Hallo Mathias,

              document.write() ist die allgemein funktionierende Lösung, um im Fenster erst einmal gleiche Voraussetzungen zu schaffen. Ich sehe tatsächlich nicht, wo das Problem liegt.

              Ich möchte das Standardisiert per Objekten machen, also keine Chars per write schreiben.

              Ich rede die ganze Zeit vom Wurzelelement (ein Terminus aus XML), du vom Wurzelknoten (ein Terminus aus DOM Core). document ist ein Knoten, der Wurzelknoten eben, aber kein Element. html ist ein Element, das Wurzelelement eben, und gleichzeitig ein Knoten.

              Jo, missveständniss, sry dafür.

              Piere.

      3. Hallo,

        Und wie Struppi sagt, du kannst nicht einen Knoten im Kontext des einen Dokuments erzeugen und dann (ohne importNode) in einem anderen einfügen.

        Kann ich sehr wohl

        Stimmt, in dem Punkt scheinst du recht zu haben.

        Mathias

        1. Und wie Struppi sagt, du kannst nicht einen Knoten im Kontext des einen Dokuments erzeugen und dann (ohne importNode) in einem anderen einfügen.

          Kann ich sehr wohl

          Stimmt, in dem Punkt scheinst du recht zu haben.

          außer im IE 6, dort geht es nicht.

          Struppi.