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"
参照できました。