子ウィンドウが開いていない場合にのみ子ウィンドウを開くような下記の処理があるとします。
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
-
親ウィンドウから開いた子ウィンドウをまとめて閉じるには?
JavaScript
-
-
4
ウィンドウの2重起動を防止したい
JavaScript
-
5
同じページをブラウザで複数開けないように
JavaScript
-
6
子ウィンドウを常に手前表示、親ウィンドウは操作させない
JavaScript
-
7
ウインドウの後ろに隠れているページを前面に出したいんです。
JavaScript
-
8
opener.focus();が利かない
JavaScript
-
9
Javascript_submit()完了後に処理したい
JavaScript
-
10
ウィンドウの制御について、質問です。
JavaScript
-
11
JSPの処理の途中で、JavaScriptの処理をしたい
JavaScript
-
12
サブウィンドウを常に最前面に表示する
JavaScript
-
13
親ウィンドウの画面遷移
JavaScript
-
14
孫ウインドウを閉じたら親をリロード
JavaScript
-
15
親子関係の無いウィンドウの制御
JavaScript
-
16
ブラウザの×ボタン(閉じるボタン)押下時のイベントをひろいたい
JavaScript
-
17
window.openでタイトル名の指定
JavaScript
-
18
子ウィンドウより親ウィンドウのフォームをsubmit
Microsoft ASP
-
19
プルダウン選択を変更すると、変更する前に戻るJavaScript
JavaScript
-
20
JavaScriptで ブラウザの閉じるを無効化に
JavaScript
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのシート上に別のシー...
-
Javascript_submit()完了後に処...
-
VBAで任意のウインドウのサイズ...
-
デスクトップ画面を4分割するには
-
ウィンドウの2重起動を防止したい
-
子ウィンドウを常に手前表示、...
-
親子関係の無いウィンドウの制御
-
ポップアップと作業ウィンドウ...
-
1クリックでモーダルを開いてか...
-
VBの画面で、全ウィンドウを一...
-
子→親ウインドウへデータを受け...
-
ウィンドウ名からウィンドウオ...
-
<EXCEL/VBA> OUTLOOKのウインド...
-
初心者javascript グーグルクロ...
-
ウインドウの親子連携について
-
子ウィンドウの「閉じる(×)」...
-
JavaScriptで指定Windowを最大...
-
子ウィンドウから親ウィンドウ...
-
親ウィンドウから開いた子ウィ...
-
子ウィンドウのリクエストを親...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのシート上に別のシー...
-
Javascript_submit()完了後に処...
-
デスクトップ画面を4分割するには
-
VBAで任意のウインドウのサイズ...
-
ウィンドウの2重起動を防止したい
-
VBの画面で、全ウィンドウを一...
-
<EXCEL/VBA> OUTLOOKのウインド...
-
ウィンドウ名からウィンドウオ...
-
ポップアップと作業ウィンドウ...
-
1クリックでモーダルを開いてか...
-
子ウィンドウの存在確認
-
window.Openをモーダルにできま...
-
子ウィンドウから親ウィンドウ...
-
親ウィンドウから開いた子ウィ...
-
助けてGmailでボタン表示が消え...
-
JavaScriptでPDFを新規ウィンド...
-
JavaScriptで指定Windowを最大...
-
初心者javascript グーグルクロ...
-
子ウィンドウより親ウィンドウ...
-
IEでのみ発生するJavaScriptエラー
おすすめ情報