
サブウィンドウの有無確認関数の中で「!!winVar」という記述がありますが、
これはいったい何を意味しているのでしょうか?
またソースの内容もいまいち理解できません。
細部の意味について知っておられる方がいましたら、
御教授のほど宜しくお願いします。
//子ウインドウ有無確認関数
function sbwin_closed(winVar) {
var ua = navigator.userAgent
if( !!winVar )
if( ua.indexOf('MSIE 4')!=-1 && ua.indexOf('Win')!=-1 )
return winVar.closed
else return typeof winVar.document != 'object'
else return true
}
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こうすると、ややわかりやすくなると思います。
//子ウインドウ有無確認関数
function sbwin_closed(winVar) {
var ua = navigator.userAgent;
if( 'object' == typeof winVar ) {
if( -1 < ua.indexOf('MSIE 4') && -1 < ua.indexOf('Win') ) {
return winVar.closed;
} else {
return typeof winVar.document != 'object';
}
} else {
return true;
}
}
「winVar.document」の記述から、
winVarは
documentの上位のオブジェクト、
windowオブジェクトを想定してることが
推察されます。
indexOf('MSIE 4')は
uaの内容から文字列を探してるのですが、
「-1」が帰ってきた場合文字列が見つからなかったことを
指します。
No.1
- 回答日時:
winVarにどういう値が入ってくるのか見えないのですが・・・。
ざっと見たところだと、
1.(!!winVar)
winVarがtrueかどうかをチェック。
1-1.ブラウザのユーザーエージェントを取得し、windowsのIE4であれば、winVarがクローズされているかどうかを返す。
(windowが表示されていればfalse、閉じられていればtrue)
1-2.ユーザーエージェントが1-1.以外の場合は、winVarのオブジェクトタイプがobjectかどうかをチェック。
(!=なので、objectじゃなければtrue、objectだったらfalseが返るのかな?)
2.winVarがfalseの場合は、trueを返す
という流れのようです。
要は呼び出し元関数に、true か false を返していると。
(!winVar)とすると、winVarがfalseの時、という意味です。
二つ重ねるとfalseの反対で、trueかどうかのチェックをしています。
意味がわからなければ、間にalertを入れて値を確認していくと良いですよ。
例えば、
if( !!winVar )
の前に
alert(!!winVar)
と入れてみたり、
alert(ua.indexOf('MSIE 4'))
と入れてみたりしたら、そこに入ってくるべき値が見れますので、それを元に参考書と付き合わせたらわかりやすくなります。
ご参考まで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- JavaScript JAVASCRIPT 2 2022/04/15 15:10
- C言語・C++・C# C言語 leetcode21 Merge Two Sorted Lists 2 2022/04/24 19:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
return trueとreturn falseの用...
-
未入力のラジオボタンに、alert...
-
ラジオボタンのNullチェック
-
slickのレスポンシブ > center...
-
JavaScriptde途中で、「exit」...
-
フォーム内で記入したクエリ送...
-
背景色を変えて未入力チェック...
-
プルダウン 項目が多いので先頭...
-
チェックボックスのチェック方法
-
ハイパーリンクを別ウインドウ...
-
onchangeイベントを強制的に発...
-
特定<table>内の<td>の色を変える
-
Javascriptでフォームのセレク...
-
value内に変数を入れたい
-
ラジオボタンでdisabledとchecked
-
tableの任意行にfocusをあてる
-
どのボタンがクリックされたの...
-
チェックボックスの値を引き渡...
-
appendChildとinnerHTMLを短く
-
プルダウン選択を変更すると、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
return trueとreturn falseの用...
-
slickのレスポンシブ > center...
-
ドロップダウンリストボックス...
-
COBOLの数字チェック
-
ツリービューのチェックボック...
-
Visual Studioのデザインでの非...
-
【javascript】 年齢計算
-
フォームの入力チェックをする...
-
ラジオボタンのNullチェック
-
Tabキーでのカーソルの移動...
-
文字列がA-F 0-9であるかチェ...
-
2次元配列で2項目についてソー...
-
JavaScriptde途中で、「exit」...
-
TEXTAREAに入力した改行コード...
-
未入力のラジオボタンに、alert...
-
!!winVar
-
チェックに応じて違うチェック...
-
チェックボックスのチェック。...
-
リロードしないようにするには
-
度胸試しのJavaScript
おすすめ情報