2011-07-27 9 views
2

で働いていない:JavaScriptのwindow.locationのはこの1つは本当に私に頭痛を与えているFirefoxの

ジャバスクリプト(のはpage1.htmlに言わせて)私は新しいウィンドウを起動するには、以下のようなコードを使用して使用して:

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

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

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

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

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

答えて

2

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

+0

これはなぜそれが機能していないのか理にかなっています。論理的には私のコードが理にかなっています。私は別のウィンドウを起動する代わりにiframeを使用する場合もこれは本当ですか? – jzimmerman2011

+1

フレーム、ウィンドウ、iframeはすべて同じ発信元ポリシーの対象です。だから、それをiframeにすることは役に立たないでしょう。 – jfriend00

+0

ラット、私は私のプロジェクトのこの部分を完全に考え直さなければならないと思います。私は、AJAX要求がこのような同じドメインアクセスに限定されていることを知っていましたが、もし私がjavascriptで新しいウィンドウを起動したら、あなたはそれを完全に制御するでしょう...まあ、ありがとう! – jzimmerman2011

1

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

からwindowObjectReference

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

これはおそらく問題だと思われます。 「同じ発信元ポリシー」リンクは要件をより詳細に文書化する。

関連する問題