opener.array[ ].document...
Jörg
- javascript
Hoffe Ihr könnt mir helfen.
Das folgende läuft nicht:
for (var i = 0; i < alleNamen.length; i++) {
opener.alleNamen[i].document.getElementById('a').src = "xyz.gif";
}
wogegen das hier läuft:
opener.fenster1.document.getElementById('a').src = "xyz.gif";
opener.fenster2.document.getElementById('a').src = "xyz.gif";
Warum? Und wie kann man das in einer Schleife laufen lassen?
Jörg
PS: in alleNamen[] stehen "fenster1" und "fenster2"
Hi Jörg!
Vielleicht hilft dir http://de.selfhtml.org/javascript/objekte/frames.htm weiter? Hier sind die möglichen calling conventions beschrieben.
Grüsse,
Richard
Hallo Richard.
Vielen dank erstmal. Vielleicht bin ich zu blöd aber ich bekomm's nicht hin:
for (var i = 0; i < alleNamen.length; i++) {
opener.schnittfenster[i].document.getElementById...
}
und
opener.schnittfenster[1].document.getElementById...
opener.schnittfenster[2].document.getElementById...
läuft auch nicht.
Jörg
Hi Jörg!
Ich sag mal nicht ja, aber ich gebe ein Beispiel:
Mit 2) wird im ersten Frame, der in opener definiert ist (!Namensunabhängig!) ein getElementById aufgerufen.
Nun kann es eigentlich nur noch daran scheitern, dass der Frame mit Inhalt befüllt ist, der nicht der same origin policy entspricht: http://en.wikipedia.org/wiki/Same_origin_policy
Grüße,
Richard
Mit 2) wird im ersten Frame, ...
Hab ich vielleicht nicht gesagt: "fenster1" und "fenster2" sind keine Frames sondern eigene Fenster die per open() aufgerufen werden.
Hab ich vielleicht nicht gesagt: "fenster1" und "fenster2" sind keine Frames sondern eigene Fenster die per open() aufgerufen werden.
Diese kannst du nicht über den Namen ansprechen, dazu musst du den Rückgabewert von window.open() verwenden.
Struppi.
Diese kannst du nicht über den Namen ansprechen, dazu musst du den Rückgabewert von window.open() verwenden.
Das wollte ich ja per Rückgabewert darauf zugreifen (siehe meine erste Nachricht). Diesen Rückgabewert (Objekt) wollte per Schleife in "opener.abc[i].document... füllen.
Nur per schleife läuft das nicht.
Diese kannst du nicht über den Namen ansprechen, dazu musst du den Rückgabewert von window.open() verwenden.
Das wollte ich ja per Rückgabewert darauf zugreifen (siehe meine erste Nachricht).
Du schreibst dort:
PS: in alleNamen[] stehen "fenster1" und "fenster2"
Und damit kannst du nichts anfangen, dort muss der Rückgabewert von open() stehen. Wenn das so ist, dann funktioniert das auch so wie du es in dem Code gezeigt hast. Du solltest aber trotzdem eine Prüfung einbauen, ob das fenster überhaupt noch existiert und dir vielleicht ein Meldung ausgeben lassen.
Ausserdem wäre es interessant zu Wissen wie eigentlich die Fehlermeldung lautet mit funktioniert nicht kann man wenig anfangen.
Struppi.
Hallo Struppi,
vielen Dank für Dein Bemühen.
Was ist denn der Rückgabewert? Ein Objekt?
Wie kann ich von einer KindSeite auf das Objekt des Elternfensters zugreifen wenn ich nicht weiss wie es heist? Das wollte ich mit der for-Schleife erreichen indem ich mir "schnitt1,schnitt2" in einem hidden-Feld des Elternfensters abspeichere und dann im Kindfenster mit
var alleNamen = opener.document.getElementById('schnittfenster').value.split(",");
darauf zugreife.
Jörg
Was ist denn der Rückgabewert? Ein Objekt?
Ja, genauer ein window Objekt.
Wie kann ich von einer KindSeite auf das Objekt des Elternfensters zugreifen wenn ich nicht weiss wie es heist?
gar nicht. Du musst schon wissen wie das Objekt heißt und dann opener.objekt
Struppi.
gar nicht. Du musst schon wissen wie das Objekt heißt und dann opener.objekt
Also zum Verständnis:
ich öffne zwei Seiten mit
schnitt1 = window.open(...
schnitt2 = window.open(...
zusätzlich speichere ich mir
"schnitt1,schnitt2"
in ein hidden-Feld.
In den geöffneten Seiten möchte ich auf die jeweils andere Kindseite zugreifen
opener.schnitt1.document...
opener.schnitt2.document...
Da ich in der Kindseite allerdings nicht weiß, wieviele Fenster geöffnet wurden, wollte ich das hidden-Feld auslesen
var alleNamen = opener.document.getElementById('schnittfenster').value.split(",");
und dann in den Kindfenstern nicht
opener.schnitt1.document...
opener.schnitt2.document...
sondern
for (var j=1; j<=alleNamen.length; j++) {
opener.alleNamen[j].document...
}
schreiben.
Leider wird dann nicht auf das window.object schnitt1 sondern auf das object alleNamen zugegriffen da alleNamen[j] nicht das Objekt enthält, sondern nur einen String der dem Objektnamen entspricht.
Stimmt das so und kann man das anders machen?
Jörg
for (var j=1; j<=alleNamen.length; j++) {
opener.alleNamen[j].document...
}
schreiben.Leider wird dann nicht auf das window.object schnitt1 sondern auf das object alleNamen zugegriffen da alleNamen[j] nicht das Objekt enthält, sondern nur einen String der dem Objektnamen entspricht.
Versuch's mal so: opener[alleNamen[j]].document...
Struppi.
Versuch's mal so: [code lang=javascript]opener[alleNamen[j]].document...
LÄUFT! Wo kann man die Syntax nachlesen?
Vielen Dank für die Geduld :-)