argius note

プログラミング関連

IEで複数のウィンドウ間で共通の変数を扱う

昨日のつづきで、ウィンドウ間でのグローバル変数を操作する方法を模索してみました。
IE限定かどうかは調べてません。


開発者ツールを使えば、htmlファイルを準備しなくても、スクリプトタブのコンソールウィンドウの下にあるテキストフィールドからインライン実行できます。
今回は、コンソールウィンドウだけで操作したイメージです。


ルートとなるウィンドウに名前をつけておきます。

window.open("about:blank", "root")

window.openをURLなしで名前を指定して実行すると、指定した名前のウィンドウの参照を取得することができます。

var w = window.open("", "root")
w.document.title = "name=" + w.name

あたりまえですが、"root"という名前のウィンドウが閉じていると、新しいウィンドウが開いてしまいます。(window.getWindowByNameみたいなメソッドがあればいいのに。)


これを使えば、同じドメイン内のページが開かれている他のフレーム(子・孫フレーム)やウィンドウからでも、"root"ウィンドウが参照できます。
"root"ウィンドウで変数を設定します。

var globalObject = "global object"

"root"ウィンドウから(window.openで)別のウィンドウを開いて、そのウィンドウでも開発者ツールを開きます。そこから"root"の変数を参照してみます。

(新しいウィンドウの開発者ツールのコンソール)
>>window.open("", "root").globalObject
"global object"

参照できました。