2009-04-01 11 views
1

Ich habe ein Popup-Fenster, das durch einen Klick auf die Schaltfläche geöffnet wird. Wenn der Benutzer nach einem bestimmten Element in dem unterordneten Fenster sucht, versuche ich, den übergeordneten Windows-Speicherort zu wechseln, indem ich window.opener.location in dem unterordneten Fenster verwende. Das Elternfenster bleibt immer auf derselben Website. Dies funktioniert gut in FireFox 3.07 & 3.1 b3 und IE 7 & 8. Aber in Chrome 2.0b (dev-Zweig) und Safari 4 Beta (für Windows) erhalte ich diese seltsamen Fehler:Fehler in Safari 4 Beta und Chrome 2

Unsafe JavaScript attempt to initiate a navigation change for frame with URL

Hier ist die seltsame Sache, in Safari es nie funktioniert, aber in Chrome funktioniert es, wenn:

*Child window is same protocol(HTTP/HTTPS) as the text i am using setting window.opener.location
*Parent window and child window are the same protocol(HTTP/HTTPS)

edit: in Opera nur beide funktioniert, wenn die Eltern-Kind-Fenster sind HTTPS ...

Antwort

0

Dies scheint eine Cross-Site-Scripting-Sicherheitsbeschränkung zu sein, die Webkit und Opera simulieren und IE und FF ignorieren.

1

es besser wäre, zu gibt einen Wert an das übergeordnete Fenster zurück, der es dann ermöglicht, zu th umzuleiten Der richtige Ort? Das scheint mir sauberer zu sein.

searchterm = window.open(...); 
+0

das ist eine gute Idee. Lass mich ein bisschen fummeln und schauen, ob ich etwas kriegen kann, das funktionieren wird. –

+0

aus der Dokumentation in window.open() der Rückgabewert ist ein Handle für das Fenster selbst. Es wäre wahrscheinlich einfacher, eine Funktion auf dem Öffner aufzurufen, der die Umleitung ausführt. z.B. window.opener.funcName ('spezieller Wert'); und das Öffnerfenster würde nach Bedarf umleiten. – scunliffe

+0

Eine andere Einschränkung, in die ich renne, ist Cross Site Scripting ... Wenn das untergeordnete Fenster HTTPS ist und das übergeordnete HTTP ist, geben Sie mir einen Fehler, und wenn ich versuche, window.open() blockiert es als Popup . –

Verwandte Themen