• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:子ウィンドウの存在確認)

子ウィンドウの存在確認

このQ&Aのポイント
  • 子ウィンドウの存在確認方法と初期化処理について
  • 子ウィンドウの存在を確認し、条件によって開く処理を行う方法について
  • 変数wの初期化方法やsubウィンドウの状態管理について

質問者が選んだベストアンサー

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答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(); とすれば子ウィンドウがアクティブになるのでオススメです。

freshjive
質問者

お礼

なるほど!w.focus()も含めて非常に参考になりました。 でも、ひとつ疑問が。「!w」って「初期化されていない」って意味になるんですかね?? とにかくありがとうございました。

その他の回答 (1)

  • tyoufu
  • ベストアンサー率28% (19/67)
回答No.1

変数 w を OpenSubWindow内のみで宣言されているので呼び出されるたびに初期化していると思います。 var w; function OpenSubWindow() { 略 } と 変数 w を OpenSubWindowの外で宣言すれば w.closed() で子画面のチェックが出来るのではないでしょうか?

関連するQ&A