サブウィンドウの二重起動を防ぐ JavaScript
懐かしいコードが出てきたので紹介。
確か IE で window.open()
しようとした時に、既に開いているウィンドウを無視して同じページを別ウィンドウで開いてしまうのが気になって、それをなんとかするために作ったモノ。だから変数宣言が var
だったりする。
/**
* 二重起動を防ぎウィンドウを開く
*
* @param {string} windowName ウィンドウ名
* @param {string} url 開きたい URL
*/
function openWindow(windowName, url) {
// 指定のウィンドウ名で空の URL を開いてみる
var win = window.open('', windowName);
// 開いたウィンドウの URL が about:blank だったら、空ウィンドウが開けたことになる
if(win.location.href === 'about:blank') {
// 空ウィンドウが開けた = その名前のウィンドウはそれまで存在していなかったので
// 開いたウィンドウの location.href に開きたいページを指定する
win.location.href = url;
}
else {
// ウィンドウの URL が about:blank ではなかった場合、既にそのウィンドウは存在している
// この場合も変数 win にはウィンドウの参照が取得できているので、以下のように掴んだウィンドウを閉じて開き直したりできる
win.close();
window.open(url, windowName);
}
}
もう言うことはない。