

子ウィンドウが開いていない場合にのみ子ウィンドウを開くような下記の処理があるとします。
function OpenSubWindow()
{
if(!w.closed()){
alert('閉じろ!');
}else{
w = window.open("a.html","sub","resizable=no,scrollbars=no");
}
}
この場合、当然のことですが、変数wはelseの中で初めて初期化されるため、ifの条件でオブジェクトが存在しないことによりエラーが発生します。
でも、"sub"というname属性のウィンドウが開いているかどうかを確認したいのですが、どうすればよいのでしょうか?wを初期化する方法が何かあるのでしょうか?それとも、subウィンドウのopen/closeの状態を管理するロジックを作りこまないといけないのでしょうか?
No.2ベストアンサー
- 回答日時:
細かなロジックを考える必要はありませんよ。
w がオブジェクトかどうか分からない時点で w.closed を評価するのがマズイだけですから、評価の順番を変えればいいんです。
var w;
function OpenSubWindow() {
if (!w || w.closed)
w = window.open("a.html", "sub", "resizable=no,scrollbars=no");
else
alert("閉じろ!");
}
ちなみに closed はメソッドではなくプロパティですので、w.closed() ではエラーとなります。
また、既に開いているときの処理は
w.focus();
とすれば子ウィンドウがアクティブになるのでオススメです。
なるほど!w.focus()も含めて非常に参考になりました。
でも、ひとつ疑問が。「!w」って「初期化されていない」って意味になるんですかね??
とにかくありがとうございました。
No.1
- 回答日時:
変数 w を OpenSubWindow内のみで宣言されているので呼び出されるたびに初期化していると思います。
var w;
function OpenSubWindow()
{
略
}
と 変数 w を OpenSubWindowの外で宣言すれば
w.closed() で子画面のチェックが出来るのではないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのシート上に別のシー...
-
Javascript_submit()完了後に処...
-
デスクトップ画面を4分割するには
-
履歴を残さないResponse.Redire...
-
<EXCEL/VBA> OUTLOOKのウインド...
-
VBの画面で、全ウィンドウを一...
-
子ウィンドウより親ウィンドウ...
-
ウィンドウの2重起動を防止したい
-
ポップアップと作業ウィンドウ...
-
親子関係の無いウィンドウの制御
-
google検索の結果を別ウインド...
-
助けてGmailでボタン表示が消え...
-
新しく開いたウィンドウへの要...
-
子ウィンドウの「閉じる(×)」...
-
親ウィンドウのメッセージを子...
-
親→子→孫サブウィンドウのフォ...
-
response.redirect <<URL>> で...
-
VBScriptでリンクをクリックし...
-
window.openのターゲットについて
-
メニューバーが表示されないウ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのシート上に別のシー...
-
Javascript_submit()完了後に処...
-
デスクトップ画面を4分割するには
-
VBの画面で、全ウィンドウを一...
-
ウィンドウの2重起動を防止したい
-
VBAで任意のウインドウのサイズ...
-
javascriptで開いたウィンドウ...
-
1クリックでモーダルを開いてか...
-
ポップアップと作業ウィンドウ...
-
<EXCEL/VBA> OUTLOOKのウインド...
-
ウィンドウ名からウィンドウオ...
-
子ウィンドウの存在確認
-
子ウィンドウより親ウィンドウ...
-
googleサイトにfacebookのいい...
-
子ウィンドウから親ウィンドウ...
-
初心者javascript グーグルクロ...
-
リンク時、親ウインドウを最前...
-
子ウィンドウから親ウィンドウ...
-
JavaScriptで指定Windowを最大...
-
親ウィンドウから開いた子ウィ...
おすすめ情報