Rene Krause: Zugriff verweigert für opener.document.forms[0]....

Hi,

obwohl ich die thematisch ähnlichen Beiträge in den Archiven studiert habe, komme ich auf keinen grünen Zweig mit folgendem Problem:

Vom Haupt-Fenster (und dort frames[0]) öffne ich ein PopUp-Fenster.
Von dort möchte ich einen Formularwert aus frames[0] überprüfen:

if(opener.document.forms[0].elements[0].value=="hallo")
 ...

Beim Ausführen der Funktion bringt JS den Fehler "Zugriff verweigert".
Ist ein Lesen von Werten eines opener-window MIT Frames generell nicht möglich oder gibt es in meiner Abfrage einen Fehler?

Danke schonmal

René

  1. Hallo,

    Beim Ausführen der Funktion bringt JS den Fehler "Zugriff verweigert".
    Ist ein Lesen von Werten eines opener-window MIT Frames generell nicht möglich oder gibt es in meiner Abfrage einen Fehler?

    Dieser Fehler kommt normalerweise, wenn du versuchst, auf ein Dokument auf einem Anderen Server zuzugreifen. Liegen die Seiten auf verschiedenen Servern bzw. Protokollen?

    Der Zugriff via JS auf ein Dokument von einem Anderen Server ist aus Sicherheitsgründen nicht möglich.

    Robert

    http://www.designauswahl.here.de
    mit kostenlosem Webseiten-Generator ROBE.dit
    [more than a HTMLE.dit]

    1. Der Zugriff via JS auf ein Dokument von einem Anderen Server ist aus Sicherheitsgründen nicht möglich.

      Nein, erstens nur lokal, zweitens der selbe Server (localhost).
      In einem ähnlichen Posting hat das auch angeblich nach dieser Methode funktioniert...

      Was könnte das Problem sein?

      René

      1. Hallo,

        Der Zugriff via JS auf ein Dokument von einem Anderen Server ist aus Sicherheitsgründen nicht möglich.

        Nein, erstens nur lokal, zweitens der selbe Server (localhost).
        In einem ähnlichen Posting hat das auch angeblich nach dieser Methode funktioniert...

        Ich hab das mal nachgebaut:
        (Gleich mal um Hinweisen vorzubeugen: ich bin mir bewusst das das nicht der beste HTML-Stil ist. Soll nur zum Test sein.)

        Datei frameset.htm:

        <html>
        <head>
        <frameset rows="100,*">
        <frame src="frame1.htm">
        <frame src="about:blank">
        </frameset>
        </head>
        <body>
        </body>
        </html>

        Datei frame1.htm:

        <html>
        <head>
        </head>
        <body>
        <a href="javascript:void(open('datei2.htm','name',''));">Popup</a>
        <form>
        <input type="text">
        </form>
        </body>
        </html>

        Datei datei2.htm:

        <html>
        <head>
        </head>
        <body>
        <script language="JavaScript">
        <!--
        document.write(opener.document.forms[0].elements[0].value);
        //-->
        </script>
        <br />
        ende
        </body>
        </html>

        Wenn ich jetzt die Datei frameset.htm anzeige, im Eingabefeld im oberen Frame etwas eingebe und dann auf den Link klicke, wird im Popup-Fenster der Inhalt des Eingabefelds angezeigt.

        Robert

        http://www.designauswahl.here.de
        mit kostenlosem Webseiten-Generator ROBE.dit
        [more than a HTMLE.dit]

        1. Ich glaube, das Problem liegt darin, dass das PopUp ausschließlich durch den Event-H. onUnload geladen wird. Obwohl ich ein timeSetout eingestellt habe, kann das Script sich nicht auf den neu geladenen Frame beziehen.

          Letztlich will ich nur überprüfen, ob nach dem "Entladen" des Frames der Frame noch da ist oder nicht. Mit anderen Worten: ob nur neu geladen wurde oder ob eine gänzlich neue Seite geladen wurde.

          Hast du noch eine Idee?

          Danke

          René

          1. Hallo,

            Ich glaube, das Problem liegt darin, dass das PopUp ausschließlich durch den Event-H. onUnload geladen wird. Obwohl ich ein timeSetout eingestellt habe, kann das Script sich nicht auf den neu geladenen Frame beziehen.

            Das habe ich in meinem Test auch schon gemerkt: sobald sich die Seite im opener verändert, kann im PupUp nicht mehr darauf zugegriffen werden.

            Letztlich will ich nur überprüfen, ob nach dem "Entladen" des Frames der Frame noch da ist oder nicht. Mit anderen Worten: ob nur neu geladen wurde oder ob eine gänzlich neue Seite geladen wurde.

            Hast du noch eine Idee?

            Öffne das PopUp vom anderen Frame aus. Dann kannst du überprüfen, ob du noch auf den Frame zugreifen kannst oder nicht. Wenn du nicht mehr zugreifen kannst, ist der Frame weg, wenn du noch Zugreifen kannst, solltest du evtl. noch andere Kriterien überprüfen (url, titel,...).

            Das ist aber zugegebenerweise nicht gerade der schönste Stil.

            Robert

            http://www.designauswahl.here.de
            mit kostenlosem Webseiten-Generator ROBE.dit
            [more than a HTMLE.dit]