![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?08b1c8b)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_09.png?08b1c8b)
子ウィンドウが開いていない場合にのみ子ウィンドウを開くような下記の処理があるとします。
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も見ています
-
それもChatGPT!?と驚いた使用方法を教えてください
仕事やプライベートでも利用が浸透してきたChatGPTですが、こんなときに使うの!!?とびっくりしたり、これは画期的な有効活用だ!とうなった事例があれば教えてください!
-
歳とったな〜〜と思ったことは?
歳とったな〜〜〜、老いたな〜〜と思った具体的な瞬間はありますか?
-
もし10億円当たったら何に使いますか?
みなさんの10億円プランが知りたいです!
-
コーピングについて教えてください
皆さんはストレスを感じたとき、どのような方法や手段、テクニックで対処していますか?
-
思い出すきっかけは 音楽?におい?景色?
記憶をふと思い出すきっかけは 音楽、におい、景色 どれですか?
-
特定のウィンドウ名を持つウィンドウの有無を判別
JavaScript
-
ウィンドウ名からウィンドウオブジェクトを取得
JavaScript
-
ウィンドウの2重起動を防止したい
JavaScript
-
-
4
ウインドウの後ろに隠れているページを前面に出したいんです。
JavaScript
-
5
画面を閉じる(×ボタンやタスクバーから)をトリガーに処理を行えるのでしょうか?
JavaScript
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ホームページ全体を拡大・縮小...
-
エクセルのシート上に別のシー...
-
ポップアップと作業ウィンドウ...
-
VBAで任意のウインドウのサイズ...
-
ウィンドウ名からウィンドウオ...
-
子ウィンドウから親ウィンドウ...
-
X-Window以外のウィンドウシステム
-
デジタル時計の時刻合わせの方...
-
マイページはどこを開くの
-
スクリプトって、何ですか?ど...
-
一定時間おきにアラームやポッ...
-
Excel VBAでの右クリックのポッ...
-
アマゾン、楽天市場などを開く...
-
エクセルVBAでフォームのListbo...
-
リストボックスをクリックした...
-
ウインドウを毎回同じ位置、大...
-
EXCELのVBAでリストボックスに...
-
Youtubeが勝手に右下に勝手に小...
-
同じページをブラウザで複数開...
-
Chromeは何で進むボタンが無いの?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのシート上に別のシー...
-
Javascript_submit()完了後に処...
-
ウィンドウの2重起動を防止したい
-
VBAで任意のウインドウのサイズ...
-
VBの画面で、全ウィンドウを一...
-
ポップアップと作業ウィンドウ...
-
デスクトップ画面を4分割するには
-
javascriptで開いたウィンドウ...
-
1クリックでモーダルを開いてか...
-
<EXCEL/VBA> OUTLOOKのウインド...
-
子ウィンドウの存在確認
-
子ウィンドウより親ウィンドウ...
-
ホームページ全体を拡大・縮小...
-
リンク時、親ウインドウを最前...
-
親ウィンドウから開いた子ウィ...
-
子ウィンドウから親ウィンドウ...
-
ウィンドウサイズを開いたとき...
-
ブラウザ(IE)からエクスプロー...
-
googleサイトにfacebookのいい...
-
window.Openをモーダルにできま...
おすすめ情報