2024年06月14日
6.[JS] 画面情報&操作
JavaScriptの画面情報の取得/画面操作は、windowオブジェクトのプロパティやメソッドとして操作します。
尚、下記のプロパティやメソッドはwindow.xxxが正式ですが、window は省略できるので省略表示としています。
画面操作には、下記の様な物があります。
1.画面サイズの取得
1.画面サイズの取得
画面サイズには【幅】と【高さ】に下記のプロパティがあります。
[幅]
| プロパティ |
説明 |
|
| screen.width | [モニタ幅]をピクセル単位で返します。固定値になります。 | |
| outerWidth | [ブラウザの表示幅]をピクセル単位で返します。 | |
| innerWidth | [コンテンツの表示幅]をピクセル単位で返します。
縦のスクロールバーの幅も含みますが、ブラウザの検証領域は含みません。 スマホサイズか否かを判断するのに利用します。
|
[高さ]
| プロパティ |
説明 |
| screen.height | [モニタ高さ]をピクセル単位で返します。固定値になります。 |
| outerHeight | [ブラウザの表示高さ]をピクセル単位で返します。 |
| innerHeight | [コンテンツの表示高さ]をピクセル単位で返します。
横のスクロールバーの高さも含みますが、タブ等のブラウザメニュ領域は含みません。 |
■画面サイズの取得事例
マウスでウィンドウサイズを変更して下さい。
下記の数値が変化します。
|
■screen.width(モニタ幅):
■outerWidth(ブラウザ幅):
■innerWidth(コンテンツ幅):
■screen.height(モニタ高さ):
■outerHeight(ブラウザ高さ):
■innerHeight(コンテンツ高さ):
|
このプログラムは下記から構成されています。
<div>■screen.width(モニタ幅): <span class='screen_width' style='color:red'> </span></div>
<div>■outerWidth(ブラウザ幅): <span class='window_outerWidth' style='color:red'> </span></div>
<div>■innerWidth(コンテンツ幅): <span class='window_innerWidth' style='color:red'> </span></div>
<br>
<div>■screen.height(モニタ高さ):<span class='screen_height' style='color:red'> </span></div>
<div>■outerHeight(ブラウザ高さ): <span class='window_outerHeight' style='color:red'> </span></div>
<div>■innerHeight(コンテンツ高さ): <span class='window_innerHeight' style='color:red'> </span></div>
<script>
$(function(){
$('.screen_width').text(screen.width); // 初期サイズの表示
$('.window_outerWidth').text(outerWidth); // 同上
$('.window_innerWidth').text(innerWidth); // 同上
$('.screen_height').text(screen.height); // 同上
$('.window_outerHeight').text(outerHeight);// 同上
$('.window_innerHeight').text(innerHeight);// 同上
$(window).resize(function(){
$('.screen_width').text(screen.width);
$('.window_outerWidth').text(outerWidth);
$('.window_innerWidth').text(innerWidth);
$('.screen_height').text(screen.height);
$('.window_outerHeight').text(outerHeight);
$('.window_innerHeight').text(innerHeight);
});
});
</script>
■1~7行目
HTMLです。
■10~15行目
画面が読み込まれた段階で表示される初期値です。
■16~23行目
マウス操作で画面サイズが変更された時に処理されます。
メモ
一般的に
幅 :screen.width > outerWidth > innerWidth
高さ:screen.height > outerHeight > innerHeight
になります。
2.URLデータの取得
URLデータの取得には下記のプロパティがあります。
| プロパティ |
説明 |
| location.href | 現在のページの[URL]を返します。 |
| location.protocol | 現在のページの[プロトコール名]を返します。 |
| location.host | 現在のページの[ドメイン名]を返します。 |
| location.pathname | 現在のページの[パス名]を返します。
ページの判断に利用します。 |
■URLデータの取得事例
[データ取得]ボタンを挿入するとデータを取得して表示します。
|
■location.href( URL ):
■location.protocol(プロトコール名):
■location.host(ドメイン名):
■location.pathname(パス名):
|
このプログラムは下記から構成されています。
<div>■location.href( URL ): <span class='location_href' style='color:red'> </span></div>
<div>■location.protocol(プロトコール名): <span class='location_protocol' style='color:red'> </span></div>
<div>■location.host(ドメイン名): <span class='location_host' style='color:red'> </span></div>
<div>■location.pathname(パス名):<span class='location_pathname' style='color:red'> </span></div>
<button type='button' class='get_button' style='margin-top:10px;'>データ取得</button>
<script>
$(function(){
$('.get_button').click(function(){
$('.location_href').text(location.href); // URL取得
$('.location_protocol').text(location.protocol); // プロトコール名取得
$('.location_host').text(location.host); // ドメイン名取得
$('.location_pathname').text(location.pathname); // パス名取得
});
});
</script>
■9~12行目
URL等を取得しています。
このサイトは
・TOPページ:https://school.t-spirits.com/
・他のページ:https://school.t-spirits.com/××/〇〇
から構成されています。
よって
location.pathnameは /××/〇〇 が返ります。
よってこれを '/' でsplit()すると[0]は空白、[1]は空白かxx、[2]は○○になるので、
・配列の1番目が空白ならばTOPページ
・配列の1番目がxxならばTOPページ以外
と判断できます。
$(function(){
if( location.pathname.split('/')[1] ){ return; } //TOPページ以外は終了
if( location.pathname.split('/')[1] == 'php'){//処理} // phpページの処理
});
3.リロードやURLオープン
指定したURLを表示したり、現在の画面をリロードする下記関数があります。
| 関数 |
説明 |
| open() | 引数で指定したURLを[新しいタブ]で開きます。 |
| location.replace() | 引数で指定したURLを[現在のタブ]に新規で開きます。
新規で開くので、ブラウザの戻るボタンで前の画面に戻れません。 |
| location.href = Url | 指定したURLを[現在のタブ]に上書きします。
現在のタブに上書きするので、ブラウザの戻るボタンで前の画面に戻ります。 |
| location.reload() | 現在のページをリロードします。 |
■URLリンクの事例
下記はHTMLの中にある target属性 の値でどのタブにURLを表示するかを判断した事例です。
・左のBOXをクリックすると『新しいタブ』に、このサイトのホームページを表示します。
・右のBOXをクリックすると『現在のタブ』に、このサイトのホームページを上書きします。
上書きなので、ブラウザの戻るボタンで前の画面に戻ります。
| Warning: include_once(/sample/javascript/method/attr01): Failed to open stream: No such file or directory in /volume1/web/school/wp-content/themes/my_template/functions.php on line 44 Warning: include_once(): Failed opening '/sample/javascript/method/attr01' for inclusion (include_path='.:/usr/share/pear') in /volume1/web/school/wp-content/themes/my_template/functions.php on line 44 |
このプログラムは下記から構成されています。
<div style='display:flex;'>
<div class='url_box1' style='cursor:pointer ; border:1px black solid ; padding:10px ;width:300px;'>
<p style='text-align:center;'>target属性 あり</p>
<a href = 'https://school.t-spirits.com' target = '_blank' ></a>
<img style='width:250px;' src='https://school.t-spirits.com/wp-content/uploads/2021/06/mirai.png' alt='mirai1'>
</div>
<div class = 'url_box2' style='cursor:pointer ; border:1px #000 solid ; padding:10px ;width:300px;margin-left:10px;' >
<p style='text-align:center;'>target属性 なし</p>
<a href = 'https://school.t-spirits.com'></a>
<img style='width:250px;' src='https://school.t-spirits.com/wp-content/uploads/2021/06/mirai.png' alt='mirai1'>
</div>
</div>
<script>
$(function(){
$('.url_box1 , .url_box2').click(function(){
var Url = $(this).find('a').attr('href');
var Target= $(this).find('a').attr('target');
if(Target == '_blank'){window.open( Url );}
else{location.href= Url;}
});
});
</script>
■4行目と9行目
<a>タグの中にtarget属性とhref属性が設定されています。
■16~17行目
jQueryで<a>タグの中のtarget属性とhref属性の値を取得しています。
上記事例では.attr()で取得していますが、これを.prop()に変えても問題ありません。
■18行~19行目
target属性が'_blank'ならば、window.open()で[新しいタブ]に表示し、空白ならlocation.hrefで[現在のタブ]に履歴付きで表示しています。
メモ
上記の事例はBOXの中の何処をクリックしても動作する様に.find('a')でターゲット属性の値を取得しています。
4.ダイアログメッセージの表示
| 関数 |
説明 |
| alert( 'メッセージ' ) | [OK]ボタンだけの警告メッセージを表示します。 |
事例
・サイズを選択しないで[購入]ボタンを挿入すると 警告メッセージ が表示されます。
|
サイズを選択して下さい
|
このプログラムは下記から構成されています。
<div>サイズを選択して下さい</div>
<select name='option_name01'>
<option value="#NONE#" selected='selected'>選択してください</option>
<option value='145'>145</option>
<option value='150'>150</option>
<option value='155'>155</option>
</select>
<button type='button' class='button01' style='margin-top:10px;'>購入</button>
<div style='color:red;' class='message01'></div>
<script>
$(function(){
$('.button01').click(function(){
var my_select = $('select[name=option_name01]').val();
if(my_select == '#NONE#'){
alert( 'オプションが選択されてません' );
$('.message01').text('');
}
else{
$('.message01').text(my_select + 'で購入処理を実行します');
}
});
});
</script>
■13行目
セレクトされた値を取得しています。
■14~20行目
セレクト値が '#NONE#'の場合は、警告メッセージを表示して、それ以外の場合は購入メッセージを出力しています。
メモ
正式なフォーム操作は PHPのセレクトフォーム を参照して下さい。
| 関数 |
説明 |
| confirm( 'メッセージ' ) | [OK]、[キャンセル]の確認ダイアログを表示します。
[返り値] OKの場合:trueを返します キャンセルの場合:falseが返されます |
事例
・サイズを選択しないで購入ボタンを挿入すると 警告メッセージ が表示されます。
・サイズを指定して購入ボタンを挿入すると 確認ダイアログ を表示します。
そのまま購入するかキャンセルするかの選択ができます。
|
サイズを選択して下さい
|
このプログラムは下記から構成されています。
<div>サイズを選択して下さい</div>
<select name='option_name02'>
<option value="#NONE#" selected='selected'>選択してください</option>
<option value='145'>145</option>
<option value='150'>150</option>
<option value='155'>155</option>
</select>
<button type='button' class='button02' style='margin-top:10px;'>購入</button>
<div style='color:red;' class='message02'></div>
<script>
$(function(){
$('.button02').click(function(){
var my_select = $('select[name=option_name02]').val();
if(my_select == '#NONE#'){
alert( 'オプションが選択されてません' );
$('.message02').text('');
}
else{
flg = confirm( 'サイズは' + my_select + 'で宜しいですか?' );
if(flg){$('.message02').text(my_select + 'で購入処理を実行します');}
else{$('.message02').text('購入処理を中断します');}
}
});
});
</script>
■19行目
確認ダイアログを出して、返り値を貰っています。
■20~21行目
返り値がtrueの場合は購入処理、faiseの場合はキャンセルしています。
メモ
正式なフォーム操作は PHPのセレクトフォーム を参照して下さい。
| 関数 |
説明 |
| var data = prompt( 'メッセージ' , '入力BOXの初期値' ) | [入力データ]と[OK]、[キャンセル]の入力ダイアログを表示します。
[返り値] OKの場合:dataに入力された値を返します。 キャンセルの場合:dataは NULL になります。 |
事例
この利用例はイベント.change(func)を参照して下さい。
[郵便番号]を指定し、[番地入力]にカーソルが入ると入力ダイアログが表示されます。