html のオブジェクト、イベント、メソッド
を研究し、js の観点からこのタグの属性がどのような方法で、どのイベントをトリガーして実現されるのかを考えます
-
キーボードマウスイベント
-
ページウィンドウイベント
-
フォームイベント
一、window イベント属性#
window オブジェクトに対してトリガーされるイベントは、<body>
内で実行されます
1.onbeforeprint/onafterprint#
ブラウザの印刷前 / 後にトリガーされます
<body onbeforeprint = print()>
<script>
function print() {
alert("印刷前!")
}
</script>
印刷前と印刷後のイベントメソッドは似ています。一つは印刷前にトリガーされ、もう一つは印刷が終了した後にトリガーされるonafterprint
イベントです。
2.onbeforeunload/unload#
ページを離れる前にトリガーされるイベント/後にトリガーされるイベント
F12 を開いてからリフレッシュしたり、ブラウザを閉じたりすると、ブラウザでイベントがトリガーされます
<script>
window.onbeforeunload = function(){
return "ヒント"
//返される内容は表示されません、
//リフレッシュ時やブラウザを閉じると、ブラウザは直接再読み込みするかどうかを提示します。直接returnすることはできません。
}
</script>
3.onerror#
画像にエラーが発生したときにこのイベントをトリガーできます。このイベントをサポートするタグは<img>
,<object>
,<style>
のみです。
<img src="1.gif" onerror = "myfun()">
<script>
function myfun() {
alert("画像エラー")
}
</script>
1.gif が存在しないため、myfun () イベントがトリガーされ、ポップアップウィンドウが表示されます。
4.onhashchange#
ドキュメントが変更されたときに発生するスクリプト
???
5.onload#
ページが読み込まれた後にトリガーされます
6.onmessage#
メッセージがトリガーされたときに実行されます
???
7.onoffline#
ブラウザがオフライン
のときにトリガーされます
<body onoffline="myfun()">
8.ononline#
ブラウザがオンライン
で動作しているときにトリガーされます
<body ononline="myfun()">
ononline
とonoffline
はネットワークが切断または接続されたときにトリガーされ、コンピュータのネットワークを制御して効果を確認できます。
9.onpagehide#
ユーザーがウェブページを離れたときにトリガーされます。また、ウィンドウが隠れたときに実行されるスクリプトとも理解できます。
ページをリフレッシュするとイベントがトリガーされます。
10.onpageshow#
新しいページを開いたりリフレッシュしたときにトリガーされます。
onload
に相当し、ページが読み込まれたときにトリガーされますが、異なるブラウザでトリガーされるタイミングが異なります。
ページを初めて読み込むとき、
onpageshow
はieブラウザ
ではトリガーされず、他の状況ではトリガーされます。
11.onresize#
ブラウザウィンドウのサイズが変更されたときにトリガーされるイベント
<body onresize="myfun()">
<script>
function myfun() {
alert('ブラウザウィンドウが変更されました')
}
</script>
</body>
12.onunload#
ページがダウンロードされたときにトリガーされます。つまり、リフレッシュまたはページを閉じたときにトリガーされます。
window.onunload = function() {
return '本当に閉じますか?'
}
13.onpopstate#
ブラウザウィンドウの履歴が変更されたときに実行されるスクリプトです。
14.onredo#
ドキュメントが元に戻されたときにトリガーされるイベントです。
二、form イベント属性#
html フォーム内でトリガーされるイベントで、通常は form 要素内で使用されます。
1.onblur#
フォーカスを失ったときに実行されるスクリプト
<input name="int" id="int" onblur="myfun()">
<script>
function myfun() {
var int = document.getElementById('int').value;
document.getElementById('int').value = int.toUpperCase();
}
</script>
input に onblur=myfun () のイベントをバインドし、input がフォーカスを失ったときにどのような効果が生じるかを示します。
2.onfocus#
要素がフォーカスを得たときにトリガーされるイベントで、onblur とは逆です。
3.onchange#
要素の値が変更されたときにトリガーされるイベント
<input type="text" id="int" name="int" onchange="myfun()">
<script>
function myfun() {
alert('私の要素が変更されました!')
}
</script>
このイベントは、input の内容を操作して変更した後、ブラウザがアラートを表示することを意味します。
4.oncontextmenu#
ユーザーが右クリック操作を行ったときにこのイベントがトリガーされます。
任意の要素にバインドしてトリガーでき、リフレッシュせずに繰り返しトリガーできます。
<div oncontextmenu="myfun()">これはテキストボックスです!</div>
<script>
function myfun() {
alert('oncontentmenuイベントがトリガーされました')
}
</script>
5.onformchange#
フォームに入力があったときにトリガーされるイベント
スクリプトをトリガーできません
6.onforminput#
フォームにユーザー入力があったときにトリガーされるイベントですが、トリガーできません。
ブラウザがサポートしていません。
6.oninput#
要素にユーザー入力があったときにトリガーされるイベントです。
入力ボックスに入力または削除すると oninput がトリガーされます。
<input type="text" oninput="myfun()">
<script>
function myfun() {
alert('oninputがトリガーされました')
}
</script>
onchange
とoninput
には似たところがあります。どちらもテキスト内容が変更されたときにトリガーされます
しかし、onchange
は input がフォーカスを失ったときにのみトリガーされ、oninput
はすぐにトリガーされます。
7.oninvalid#
oninvalid
イベントはrequired
属性と組み合わせて使用します。
required
を使用する場合、その属性は必須フィールドを示し、oninvalid
は要素が無効なときにトリガーされるイベントです。
<form>
<input type="text" oninvalid="myfun()" required>
<input type="submit">
</form>
<script>
function myfun() {
alert('入力が空です')
}
</script>
8.onreset#
フォーム内のリセットボタンがクリックされたときにトリガーされます。
<form onreset="myfun()">
<input type="text">
<input type="reset" value="リセット">
</form>
<script>
function myfun(){
alert('リセット成功')
}
</script>
9.onselect#
テキストが選択されたときにトリガーされます。
<input onselect="myfun()" value="私を選択してください">
<script>
function myfun() {
alert('onselectがトリガーされました ')
}
</script>
10.onsubmit#
フォームが送信されたときにトリガーされます。
イベントを form タグにバインドする必要があります。
<form onsubmit="myfun()">
<!-- 注意:イベントはformタグにバインドする必要があります -->
<input type="text" name="name">
<input type="submit" value="送信">
</form>
<script>
function myfun() {
alert('送信されました')
}
</script>
注意:送信後は自動的にページがリフレッシュされ、document と console のトリガー内容はすぐにリフレッシュされ、一瞬で消えます。alert だけがページに留まり、確認を待ちます。
三、key キーボードイベント#
1.onkeydown#
任意のキーが押されたときにトリガーされます。システムボタン、矢印キー、ファンクションキーも含まれます。
2.onkeypress#
任意のアルファベットまたは数字キーが押されたときにトリガーされますが、システムボタン、矢印キー、ファンクションキーは認識されません。
3.onkeyup#
以前に押された任意のキーが放されたときにトリガーされます。
四、mouse マウスイベント#
マウスを使用してトリガーされるイベント
1.onclick#
マウスで要素をクリックしたときにトリガーされるイベントです。
<p onclick="myfun()">クリックしてください</p>
<script>
function myfun() {
alert('クリック成功')
}
</script>
2.ondblclick#
マウスをダブルクリックしたときにトリガーされるイベントです。
<div ondblclick="myfun()">テストテキスト!</div>
<script>
function myfun() {
alert('ダブルクリックテスト成功!')
}
</script>
3. ドラッグイベント#
ondrag/
要素がドラッグされているときにトリガーされるイベントです。
ondragstart / ドラッグ操作の開始時に実行されるスクリプトです。
ondrop/
要素がドラッグされているときにトリガーされるイベントです。
ondragend / ドラッグ操作の終了時に実行されるスクリプトです。
ondragenter / 要素が有効なドラッグ&ドロップ領域にドラッグされたときに実行されるスクリプトです。
ondragleave / 要素が有効なドロップターゲットから離れたときに実行されるスクリプトです。
ondragover / 要素が有効なドロップターゲットの上でドラッグされているときに実行されるスクリプトです。
4.onmousedown/onmouseup#
要素がマウスで押されたときにトリガーされるイベント / マウスが放されたときにトリガーされるイベントです。
- 一つは押した瞬間にトリガーされます。
- もう一つはマウスが放されたときにトリガーされます。
onmouseup
の効果はonclick
と同じです。なぜなら、click
もクリック後にトリガーされるからです。
これらの二つのイベントを合わせると、click
イベントに相当しますが、これらの二つのイベントを使用してクリックイベントの効果を作ることはできません。
5.onmousemove#
マウスが要素の上に移動したときにトリガーされます。
css の:hover
に相当しますが、イベントとしてはより柔軟で多様な使い方があります。
6.onmouseout#
マウスが要素から離れたときにトリガーされます。
7.onmouseover#
マウスが要素に入ったときにトリガーされます。
onmouseover
とonmousemove
はマウスが要素に入ったときにトリガーされます。
違い:
1.
over
は要素に入ったときにトリガーされますが、要素内部で移動してもトリガーされません。
move
は要素に入ったときと要素内部で移動したときの両方でトリガーされます。
2.
over
が優先的にトリガーされ、その後にmove
がトリガーされます。
8.onmousewheel#
マウスがスクロールされたときにトリガーされるイベントです。
<style>
div {
height: 1000px;
}
</style>
<body>
<div onmousewheel="myfun()">テスト</div>
<script>
function myfun() {
alert('onmousewheel')
}
</script>
</body>
毎回スクロールするたびにトリガーされ、body にバインドできます。
9.onscroll#
要素のスクロールバーがスクロールされたときにトリガーされるイベントです。
<div onscroll="myfun()">私の若い頃、父は私にずっと考えているアドバイスをくれました。</div>
<p>スライドした<span id="ci"></span>回数</p>
<script>
x = 0
function myfun() {
document.getElementById('ci').innerHTML = x += 1
}
</script>
このケース---スクロールカウント
違い:
1.wheel
はホイールが滑動しているときに有効で、マウスをドラッグしているときには無効です。
2.onscroll
は滑動しているときでもドラッグしているときでも有効です。