2

これは本当に私に頭痛の種を与えています:

javascriptを使用して(たとえばpage1.htmlで)、次のようなコードを使用して新しいウィンドウを起動します。

var popwindow = window.open("http://www.stackoverflow.com");

popwindow次に、3秒または4秒ごとに繰り返すために使用する関数に変数を渡しますsetTimeout(この部分はそれほど重要ではないと思います)。この小さなループコードが行うことlocationは、ポップアップウィンドウのオブジェクトをチェックして、URLが変更され、特定のクエリ文字列変数が含まれていることを確認することです。

ほとんどの場合、これは機能しています。コードが繰り返され、firebugを使用すると、ウィンドウオブジェクトが正常に渡されていることがわかります。

私の問題は、popwindow.location.hrefまたはにアクセスしようとするとpopwindow.location.search、JavaScriptがクラッシュすることです。popwindow.location.toString()私は単に自分でこのようなものを取り出すためにやろうとしましたが、それもクラッシュします。

Firebugを使用するlocationと、アクセスしようとしているオブジェクトが正当locationなインスタンスであることがわかります。firebugを使用するとlocation、スクリプトを一時停止したときにオブジェクトのフィールドを参照できます。しかし、私がこれらのものにアクセスしようとすると(私はそれらに書き込んでおらず、値を読み取るだけです)、それは決して機能しません...それが役立つ場合は、最新バージョンのFirefox(5.0だと思います)を使用しています。

4

2 に答える 2

2

参照されているウィンドウが、実行しているスクリプトが存在するウィンドウと同じドメイン上にない場合、ブラウザはクロスドメインウィンドウにアクセスできません。例外がスローされます。

于 2011-07-27T19:53:09.263 に答える
1

https://developer.mozilla.org/En/DOM/Window.openから

windowObjectReference

これは、新しく作成されたブラウザウィンドウを指す参照です。この参照は、open()メソッドの戻り値です。何らかの理由でウィンドウを開くことができなかった場合はnullになります。このような参照を格納するには、グローバル変数を使用するのが最適です。次に、たとえば、メインウィンドウとセカンダリウィンドウの関係が同一生成元ポリシーのセキュリティ要件に準拠していると仮定して、これを使用して新しいウィンドウのプロパティを検索したり、そのメソッドにアクセスしたりできます。

これはおそらくあなたの問題だと思います。「同一生成元ポリシー」リンクは、要件をより詳細に文書化しています。

于 2011-07-27T19:55:19.187 に答える