ウィンドウ名を指定して、すでに開かれているウィンドウのwindowオブジェクトを取得する方法です。

window.openによるwindowの取得

ウィンドウを開く window.open メソッドにより、windowオブジェクトを取得します。その際、URLには “”(空文字) を指定します。

var win = window.open("", "ウィンドウ名", "オプション");

対応ブラウザ:確認中

window.openは、引数に(URL, ウィンドウ名, オプション)を指定し、同一ウィンドウ名のウィンドウが開かれていれば、そのwindowオブジェクトを取得し、開かれていなければ新規にウィンドウを開き、そのwindowオブジェクトを取得します。
ここで注意が必要となります。URLを指定すると、すでに開かれている指定したウィンドウ名のウィンドウから、指定したURLに対しアクセスを行います。単純にwindowオブジェクトを取得したいだけであれば、URLには “”(空文字) を指定します。

また指定してウィンドウ名のウィンドウが開かれていない場合、新規にウインドウが開かれてしまいます。window.openによりwindowオブジェクトの取得を行う場合、これはどうしようもありません。開いたウィンドウに対し、どのようなアクションをするか、決めなければなりません。

例:開いたウィンドウを閉じる
var win = window.open("", "ウィンドウ名", "オプション");
if (win != null && typeof win !== "undefined" && win.location.href == 'about:blank') {
	win.close(); // 閉じる
}
例:開いたウィンドウ上で特定のページに遷移する
// 遷移先URLが別ドメインの場合、ブラウザによっては既存のwindow取得不可
var win = window.open("", "ウィンドウ名", "オプション");
if (win != null && typeof win !== "undefined" && win.location.href == 'about:blank') {
	win.location.href = "遷移先URL";
}
例:submitし、結果を開いたウィンドウに表示する
// submit先URLが別ドメインの場合、ブラウザによっては既存のwindow取得不可
var win = window.open("", "ウィンドウ名", "オプション");
if (win != null && typeof win !== "undefined" && win.location.href == 'about:blank') {
	document.forms[0].target = "ウィンドウ名";
	document.forms[0].submit();
}


Leave a Reply

preload preload preload