- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:子ウィンドウの存在確認)
子ウィンドウの存在確認
このQ&Aのポイント
- 子ウィンドウの存在確認方法と初期化処理について
- 子ウィンドウの存在を確認し、条件によって開く処理を行う方法について
- 変数wの初期化方法やsubウィンドウの状態管理について
- みんなの回答 (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(); とすれば子ウィンドウがアクティブになるのでオススメです。
その他の回答 (1)
- tyoufu
- ベストアンサー率28% (19/67)
回答No.1
変数 w を OpenSubWindow内のみで宣言されているので呼び出されるたびに初期化していると思います。 var w; function OpenSubWindow() { 略 } と 変数 w を OpenSubWindowの外で宣言すれば w.closed() で子画面のチェックが出来るのではないでしょうか?
お礼
なるほど!w.focus()も含めて非常に参考になりました。 でも、ひとつ疑問が。「!w」って「初期化されていない」って意味になるんですかね?? とにかくありがとうございました。