子ウィンドウが開いていない場合にのみ子ウィンドウを開くような下記の処理があるとします。
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も見ています
-
【お題】NEW演歌
【大喜利】 若い人に向けたことは分かるけど、それはちょっと寄せ過ぎて変になってないか?と思った演歌の歌詞
-
秘密基地、どこに作った?
小さい頃、1度は誰もが作ったであろう秘密基地。 大人の今だからこそ言える、あなたの秘密基地の場所を教えてください!
-
土曜の昼、学校帰りの昼メシの思い出
週休2日が当たり前の今では懐かしい思い出ですが、昔は土曜日も午前中まで学校や会社がある「半ドン」で、いつもよりちょっと早く家に帰って食べる昼ご飯が、なんだかちょっと特別に感じたものです。
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら「ろうそくの数はあなたが好きな人の数です」と言われ浮気者扱いされたことをいまだに根に持っています。
-
ギリギリ行けるお一人様のライン
おひとり様需要が増えているというニュースも耳にしますが、 あなたが「ギリギリ一人でも行ける!」という場所や行為を教えてください
-
特定のウィンドウ名を持つウィンドウの有無を判別
JavaScript
-
ウィンドウ名からウィンドウオブジェクトを取得
JavaScript
-
ウィンドウの2重起動を防止したい
JavaScript
-
-
4
画面を閉じる(×ボタンやタスクバーから)をトリガーに処理を行えるのでしょうか?
JavaScript
-
5
ボタンを押すとチェックボックスにチェックが入るようにするにはどうすればいいですか?
JavaScript
-
6
閉じた後のwindow.closed検知
JavaScript
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのシート上に別のシー...
-
Javascript_submit()完了後に処...
-
子ウィンドウより親ウィンドウ...
-
子ウィンドウから親ウィンドウ...
-
デスクトップ画面を4分割するには
-
孫ウインドウを閉じたら親をリ...
-
javascriptで開いたウィンドウ...
-
ポップアップと作業ウィンドウ...
-
子→親ウインドウへデータを受け...
-
エラー:アクセスが拒否されました
-
子ウィンドウから親ウィンドウ...
-
親ウィンドウから開いた子ウィ...
-
VBの画面で、全ウィンドウを一...
-
子ウィンドウの存在確認
-
window.close()で確認メッセー...
-
ブラウザ(IE)からエクスプロー...
-
親ウィンドウのURL
-
親→子→孫サブウィンドウのフォ...
-
別フレームのページを更新させたい
-
サブウィンドウから親ウィンド...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのシート上に別のシー...
-
Javascript_submit()完了後に処...
-
ウィンドウの2重起動を防止したい
-
VBAで任意のウインドウのサイズ...
-
VBの画面で、全ウィンドウを一...
-
ポップアップと作業ウィンドウ...
-
ブラウザ(IE)からエクスプロー...
-
デスクトップ画面を4分割するには
-
<EXCEL/VBA> OUTLOOKのウインド...
-
子ウィンドウの存在確認
-
子ウィンドウから親ウィンドウ...
-
1クリックでモーダルを開いてか...
-
JavaScriptで指定Windowを最大...
-
子ウィンドウより親ウィンドウ...
-
リンク時、親ウインドウを最前...
-
子ウィンドウを常に手前表示、...
-
ウィンドウ名からウィンドウオ...
-
window.close()で確認メッセー...
-
孫ウインドウを閉じたら親をリ...
-
ビルダーでポップアップウィン...
おすすめ情報