子ウィンドウが開いていない場合にのみ子ウィンドウを開くような下記の処理があるとします。
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) パーソナルXLSBのfuctionを呼び出すと「Functionが定義されていません」のエラーになる 2 2022/08/22 22:51
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
特定のウィンドウ名を持つウィンドウの有無を判別
JavaScript
-
ウィンドウ名からウィンドウオブジェクトを取得
JavaScript
-
ウィンドウの2重起動を防止したい
JavaScript
-
-
4
window.openでタイトル名の指定
JavaScript
-
5
子ウィンドウより親ウィンドウのフォームをsubmit
Microsoft ASP
-
6
ボタンを押すとチェックボックスにチェックが入るようにするにはどうすればいいですか?
JavaScript
-
7
閉じた後のwindow.closed検知
JavaScript
-
8
Javascript_submit()完了後に処理したい
JavaScript
-
9
ウィンドウの制御について、質問です。
JavaScript
-
10
親ウィンドウから開いた子ウィンドウをまとめて閉じるには?
JavaScript
-
11
ウインドウの後ろに隠れているページを前面に出したいんです。
JavaScript
-
12
子ウィンドウを常に手前表示、親ウィンドウは操作させない
JavaScript
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのシート上に別のシー...
-
Javascript_submit()完了後に処...
-
VBAで任意のウインドウのサイズ...
-
VBの画面で、全ウィンドウを一...
-
window.openでform内のデータを...
-
IEでのみ発生するJavaScriptエラー
-
サブウィンドウからメインウィ...
-
JavaScriptでPDFを新規ウィンド...
-
子ウィンドウより親ウィンドウ...
-
同じURLのフォームが開いている...
-
1クリックでモーダルを開いてか...
-
孫ウインドウを閉じたら親をリ...
-
親ウィンドウから開いた子ウィ...
-
子ウィンドウの「閉じる(×)」...
-
ウインドウの親子連携について
-
子ウィンドウから親ウィンドウ...
-
エクセルの表示画面について
-
タスクバーに非表示
-
子ウィンドウの存在確認
-
親→子→孫サブウィンドウのフォ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのシート上に別のシー...
-
Javascript_submit()完了後に処...
-
VBAで任意のウインドウのサイズ...
-
ウィンドウの2重起動を防止したい
-
VBの画面で、全ウィンドウを一...
-
ポップアップと作業ウィンドウ...
-
子ウィンドウから親ウィンドウ...
-
ウィンドウ名からウィンドウオ...
-
子→親ウインドウへデータを受け...
-
子ウィンドウの存在確認
-
子ウィンドウから親ウィンドウ...
-
window.openで新しいページを後...
-
<EXCEL/VBA> OUTLOOKのウインド...
-
親ウィンドウから開いた子ウィ...
-
window.Openをモーダルにできま...
-
1クリックでモーダルを開いてか...
-
孫ウインドウを閉じたら親をリ...
-
子ウィンドウの「閉じる(×)」...
-
JavaScriptで指定Windowを最大...
-
助けてGmailでボタン表示が消え...
おすすめ情報