window.name probleme

Zor

Grünschnabel
Also ich öffne von einer Hauptseite "index.php" ein anderes Fenster mit

window.open("palette.php", "palette");

Wenn ich nun in dem neuen Fenster auf ein Bild klicke möchte ich beim "onClick"-Event, dass im vorherigen Fenster also bei "index.php" sich irgendwas tut. Z.b. die Funktion blur(); Wie mache ich das nun. Meine Versuche das Fenster durch Benennen mit

window.self.name = 'main';

und Abrufen durch

alert(window.main.name); aus der Palette-Datei heraus geht nicht. Wie dann? Bitte helft mir ich bin verzweifelt :(
 
hm das geht soviel ich weiss nicht. mit javascript kannst du nicht auf andere fenster zugreifen. (glaube ich) worum geht's denn konkret? vielleicht können wir's ja trotzdem irgendwie realisieren.
 
SilentWarrior, da irrst du leider.

Seit JavaScript 1.1 besitzt jedes Fenster eine Eigenschaft opener, die auf das window-Objekt desjenigen Fensters zugreift, welches das aktuelle Fenster geöffnet hat.
Wurde dieses Fenster nicht per JavaScript aus einem anderen Fenster heraus geöffnet, dann ist der Inhalt dieser Eigenschaft null.

Ein blurren des öffnenden Fensters aus dem PopUp heraus ginge wie folgt:
PHP:
<script type="text/javascript" language="JavaScript1.1">
<!--
function blurOpener() {
    window.opener.blur();
}
//-->
</script>
Eine Abfrage, ob die window.blur()-Methode existiert, wie in manchen Beispiels aufzufinden sein dürfte, ist dahingehend nicht notwendig, weil im language-Attribut des <script>-Tags eh die JavaScript-Version 1.1 des Interpreters vorausgesetzt wird, ab der auch die blur()-Methode unterstützt wird. :)

Diese Funktion noch in einem EventHandler verstaut:
PHP:
<a href="seite.html" onClick="blurOpener();">Klick mich!</a>
und das ganze sollte reibungsfrei laufen. :)

Btw. ist das Schlüsselwort self eine Referenz auf das window-Objekt des jeweiligen Fensters, eine Referenzierung á la
PHP:
window.self
bzw. andersherum ist von daher Unfug.

Dein Idee, dem Hauptfenster einen Namen zu geben ist btw. keine schlechte Idee, etwas anderes ist der Gedanke von window.opener auch nicht.

Um dein Problem dabei zu verstehen, lies dir bitte mal die Referenzierung von Frames in SelfHTML durch, dann wirst du verstehen warum du mit
PHP:
alert(window.main.name);
nicht das Hauptfenster triffst. ;)
Ansonsten kannst du gerne auch nochmal hier fragen und ich werde dir das erklären, ist an sich keine schwere Sache. :)

hth,
Geist
 
Nunja, top greift auf das oberste Fenster-Objekt des Browserfensters zu, heißt wenn du eine Framesetdatei besitzt, die 3 Frames definiert, dann referenzierst du mit top das Framesetdokument.

Rufst du nun aus einem der Unterframes bspw. folgendes auf:
PHP:
opener.location.reload();
dann wird nichts geschehen, weil der Unterframe nicht das Dokument ist, welches du in das oberste Browserfenster-Objekt geladen hast, denn das wäre wie geschrieben die Framesedatei.

Also müsstest du zuerst dieses Dokument per
PHP:
top.opener.location.reload();
referenzieren, denn nur es besitzt die Eigenschaft opener (vorausgesetzt natürlich, das ganze Fenster wurde von einer anderen Seite aus per window.open()-Methode geöffnet!), die sich auf das öffnende Dokument bezieht.

Hast du in dem geöffneten Fenster nur ein Dokument ohne mehrere Frames, dann kannst du das top natürlich weglassen, denn dann ist das derzeitige window-Objekt identisch mit dem, welches du über top ansteuern würdest. :)

hth,
Geist
 
Das mag sein, aber ich rufe opener nicht aus einem Frame, sondern einem eigenen Fenster auf. Da das Hauptfenster eh nur ein Frame hat, ist es wahrscheinlich auch mit opener anzusprechen. Es geht also auch ohne top. ;)
 
Da komm' ich jetzt ehrlich gesagt nicht hinterher, denn irgendwie macht dein Posting den Eindruck, als ob ich dir empfohlen hätte, in deinem Fall mit top zu arbeiten...!?

Geist,
etwas verwirrt
 

Neue Beiträge

Zurück