bjnas: Zugriff auf Open Windows

Hallo zusammen

Habe mal versucht, auf ein mit window.open('foo.html') erzeugtes Fenster mittels document.getElementById('test') wieder zuzugreifen und Werte anzupassen.

Hat nicht gefunzt.
Meine Frage, geht das - oder noch besser wie geht das ?

Danke für Eure Hilfe

  1. Hallo Bjnas,

    Habe mal versucht, auf ein mit window.open('foo.html') erzeugtes Fenster mittels document.getElementById('test') wieder zuzugreifen und Werte anzupassen.

    da machst Du einiges falsch, weil Dir die Hintergründe nicht ganz klar sind. Lies dazu den Artikel Zugriff auf verschachtelte Fensterobjekte!

    Gruß aus Berlin!
    eddi

    --
    Könnte bitte jemand mal langsam dafür sorgen, dass da draußen nicht dauernd die Filmrolle "Planet der Affen" abgedudelt wird? Danke!
  2. Hallo bjnas

    Habe mal versucht, auf ein mit window.open('foo.html') erzeugtes Fenster …

    PopUps sind meist nicht zu empfehlen.

    … mittels document.getElementById('test') wieder zuzugreifen und Werte anzupassen.

    Das JavaScript müsste in deiner „foo.html” stehen oder du musst gezielt dieses Fenster ansprechen (Zugriff auf verschachtelte Fensterobjekte).
    Das funktioniert mittels Fenstername.document.…, aber nur, wenn der Fensterinhalt von der selben Domain stammt, wie die Seite mit dem JavaScript (Same Origin Policy).

    Auf Wiederlesen
    Detlef

    --
    - Wissen ist gut
    - Können ist besser
    - aber das Beste und Interessanteste ist der Weg dahin!
    1. Hallo bjnas

      Habe mal versucht, auf ein mit window.open('foo.html') erzeugtes Fenster …

      PopUps sind meist nicht zu empfehlen.

      Es geht hier nur um eine dynamische Druckansicht.

      … mittels document.getElementById('test') wieder zuzugreifen und Werte anzupassen.

      Das JavaScript müsste in deiner „foo.html” stehen oder du musst gezielt dieses Fenster ansprechen (Zugriff auf verschachtelte Fensterobjekte).
      Das funktioniert mittels Fenstername.document.…, aber nur, wenn der Fensterinhalt von der selben Domain stammt, wie die Seite mit dem JavaScript (Same Origin Policy).

      Natürlich verwende ich das erzeugte Objekt fenster = window.open('foo.html') für die Zuweisung fenster.document.getElementById('test') wieder.

      Wie würdet Ihr das machen ?

      Ich möchte je nach Aufruf, ein neues Fenster mit der speziell zugeschnittene Druckansicht erzeugen. Die Daten dazu werden aus der aufrufender Site oder einer Text Datei gesammelt.

      Danke für Hinweise

      Auf Wiederlesen
      Detlef

      1. Hi,

        Habe mal versucht, auf ein mit window.open('foo.html') erzeugtes Fenster …
        PopUps sind meist nicht zu empfehlen.
        Es geht hier nur um eine dynamische Druckansicht.

        Die erreicht man doch über File - Print Preview.

        Wozu soll da ein Popup erforderlich sein?

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
      2. Hallo bjnas

        Natürlich verwende ich das erzeugte Objekt fenster = window.open('foo.html') für die Zuweisung fenster.document.getElementById('test') wieder.

        Das hättest du uns in deinem Ursprungsposting verraten können.
        Schau nach, was die Fehlerkonsole sagt.
        „Hat nicht gefunzt” ist keine ausreichende Fehlerbeschreibung!
        Auch wäre ein wenig relevanter Quelltext hilfreich.
        Wo und wie wird die Variable „fenster” erzeugt?
        Ist das eine globale Variable?
        Kennt die Funktion, die die Werte anpassen soll, diese überhaupt?

        Wie würdet Ihr das machen ?

        Ich möchte je nach Aufruf, ein neues Fenster mit der speziell zugeschnittene Druckansicht erzeugen. Die Daten dazu werden aus der aufrufender Site oder einer Text Datei gesammelt.

        Ich würde keine speziell zugeschnittene Druckansicht verwenden, sondern eher ein spezielles Druckstylesheet.

        Auf Wiederlesen
        Detlef

        --
        - Wissen ist gut
        - Können ist besser
        - aber das Beste und Interessanteste ist der Weg dahin!
        1. Hallo bjnas

          Natürlich verwende ich das erzeugte Objekt fenster = window.open('foo.html') für die Zuweisung fenster.document.getElementById('test') wieder.

          Das hättest du uns in deinem Ursprungsposting verraten können.
          Schau nach, was die Fehlerkonsole sagt.
          „Hat nicht gefunzt” ist keine ausreichende Fehlerbeschreibung!
          Auch wäre ein wenig relevanter Quelltext hilfreich.
          Wo und wie wird die Variable „fenster” erzeugt?
          Ist das eine globale Variable?
          Kennt die Funktion, die die Werte anpassen soll, diese überhaupt?

          Hier das bisschen Code (brauche ich eine globale Variable?) :

            
          function printdoc(e) {  
                  var o = e.srcElement || e.target;  
                  var fenster = window.open('print.html', '_blank', 'width=500,height=800,status=no,scrollbars=yes,resizable=no');  
          fenster.document.getElementById("agb").innerHTML = o.parentNode.innerHTML;  
          fenster.focus();  
             }
          

          Das o.parent.innerHTML funktioniert.
          Das Fenster wird geöffnet aber beim fenster.document.getElement.. bleibt er hängen.

          Wie würdet Ihr das machen ?

          Ich möchte je nach Aufruf, ein neues Fenster mit der speziell zugeschnittene Druckansicht erzeugen. Die Daten dazu werden aus der aufrufender Site oder einer Text Datei gesammelt.

          Ich würde keine speziell zugeschnittene Druckansicht verwenden, sondern eher ein spezielles Druckstylesheet.

          Das geht leider nicht da nur gewisse Teile für die Druckansicht verwendet werden. Daraus wird quasi ein Merkzettel für ein Kurs generiert, und den wollte ich Clientseitig erstellen.

          Auf Wiederlesen
          Detlef

          1. Hi,

            function printdoc(e) {
                    var o = e.srcElement || e.target;
                    var fenster = window.open('print.html', '_blank', 'width=500,height=800,status=no,scrollbars=yes,resizable=no');
            fenster.document.getElementById("agb").innerHTML = o.parentNode.innerHTML;
            fenster.focus();
               }

            
            >   
            > Das o.parent.innerHTML funktioniert.  
            > Das Fenster wird geöffnet aber beim fenster.document.getElement.. bleibt er hängen.  
              
            Du gehst davon aus, dass augenblicklich nach dem Erstellen des neuen Fensters auch das Dokument in diesem schon geladen wäre, was aber natürlich nicht der Fall ist.  
              
            MfG ChrisB  
              
            
            -- 
            Light travels faster than sound - that's why most people appear bright until you hear them speak.
            
          2. Hallob jnas

            Das Fenster wird geöffnet aber beim fenster.document.getElement.. bleibt er hängen.

            Warum das passiert hat dir ChrisB ja bereits geschrieben.

            Ich würde keine speziell zugeschnittene Druckansicht verwenden, sondern eher ein spezielles Druckstylesheet.

            Das geht leider nicht da nur gewisse Teile für die Druckansicht verwendet werden. Daraus wird quasi ein Merkzettel für ein Kurs generiert, und den wollte ich Clientseitig erstellen.

            Wenn ich dich richtig verstehe, dann willst du bestimmte Teile der aktuellen Seite drucken, den Rest nicht.
            Was hindert dich denn daran, im Druckstylesheet die gewünschten Teile passend zu formatieren und alle anderen auf display:none zu setzen. (Es sei denn, du willst die Möglichkeit bestehen lassen, auch die gesamte Seite zu drucken.)

            Auf Wiederlesen
            Detlef

            --
            - Wissen ist gut
            - Können ist besser
            - aber das Beste und Interessanteste ist der Weg dahin!
            1. Hallob jnas

              Das Fenster wird geöffnet aber beim fenster.document.getElement.. bleibt er hängen.

              Warum das passiert hat dir ChrisB ja bereits geschrieben.

              Ich würde keine speziell zugeschnittene Druckansicht verwenden, sondern eher ein spezielles Druckstylesheet.

              Das geht leider nicht da nur gewisse Teile für die Druckansicht verwendet werden. Daraus wird quasi ein Merkzettel für ein Kurs generiert, und den wollte ich Clientseitig erstellen.

              Wenn ich dich richtig verstehe, dann willst du bestimmte Teile der aktuellen Seite drucken, den Rest nicht.
              Was hindert dich denn daran, im Druckstylesheet die gewünschten Teile passend zu formatieren und alle anderen auf display:none zu setzen. (Es sei denn, du willst die Möglichkeit bestehen lassen, auch die gesamte Seite zu drucken.)

              Die Homepage beinhaltet verschiedene Kurse und für jeden Kurs ein Printsymbol. Jetzt wollte ich nur den angeklickten Kurs als Printansicht anzeigen lassen. Über das Druckstylesheet bekomme ja jedesmal die gleiche Ansicht.

              Werde es doch über PHP lösen, da bin ich sattelfester.

              Danke für die Hilfe.

              Bruno

              Auf Wiederlesen
              Detlef

              1. Hallo bjnas

                Die Homepage beinhaltet verschiedene Kurse und für jeden Kurs ein Printsymbol. Jetzt wollte ich nur den angeklickten Kurs als Printansicht anzeigen lassen. Über das Druckstylesheet bekomme ja jedesmal die gleiche Ansicht.

                OK, dann verstehe ich endlich, warum extra Seiten mit der jeweiligen Printansicht wolltest.

                Werde es doch über PHP lösen, da bin ich sattelfester.

                Das halte ich auch für sinnvoll, dann wäre auch überhaupt kein JavaScript erforderlich.
                Da du ja sowieso eine extra Resource („print.html”) vom Server anforderst würde deine Javascriptvariante auch nicht wirklich Vorteile bringen.

                Auf Wiederlesen
                Detlef

                --
                - Wissen ist gut
                - Können ist besser
                - aber das Beste und Interessanteste ist der Weg dahin!