JavaScript BOMの構成と一般的なイベントの詳細な説明

JavaScript BOMの構成と一般的なイベントの詳細な説明

1. 部品

1. BOM とは何ですか?

BOM (ブラウザ オブジェクト モデル) は、コンテンツとは独立してブラウザ ウィンドウと対話するオブジェクトを提供するブラウザ オブジェクト モデルです。そのコア オブジェクトはウィンドウです。

BOM は一連の関連オブジェクトで構成され、各オブジェクトは多くのメソッドとプロパティを提供します。

BOM には標準がありません。JavaScript 構文の標準化団体は ECMA で、DOM の標準化団体は W3C です。BOM はもともと Netscape ブラウザ標準の一部でした。

2. BOMの構成

次の図に示すように:

ここに画像の説明を挿入

ウィンドウ オブジェクトはブラウザーの最上位オブジェクトであり、2 つの役割を持ちます。

JS がブラウザ ウィンドウにアクセスするためのインターフェイスです。別のグローバル オブジェクト。グローバル スコープで定義された変数と関数は、ウィンドウ オブジェクトのプロパティとメソッドになります。

呼び出し時にウィンドウを省略できます。alert()、prompt() などはすべてウィンドウ オブジェクトのメソッドです。

ウィンドウ オブジェクトを呼び出して、そのオブジェクトにどのようなプロパティとメソッドがあるかを確認できます。

以下のように表示されます。

コンソールログ(ウィンドウ);

傍受された部分は次のとおりです。

ここに画像の説明を挿入

グローバル スコープで定義された変数と関数は、ウィンドウ オブジェクトのプロパティとメソッドになることがわかります。

2. ウィンドウオブジェクトの共通イベント

1. ウィンドウ読み込みイベント

JavaScript の実行メカニズムでは、コードの実行は上から下の順番で実行されることがわかっているので、ボタンにクリック イベントを追加する場合は、次のように、まずボタンを設定し、次にボタンを動作させるしかありません。

<本文>
    <button>クリック</button>
    <スクリプト>
        var btn = document.querySelector('ボタン');
        btn.onclick = 関数(){
            alert('クリックしました!')
        }
    </スクリプト>
</本文>

効果をクリックします:

ここに画像の説明を挿入

バインドされたクリック イベントをページの先頭に配置したい場合、明らかにそれは不可能です。では私たちは何をすべきでしょうか?現時点では、ウィンドウ読み込みイベントを通じてこれを完了できます。

window.onloadはウィンドウ (ページ) の読み込みイベントです。このイベントは、ドキュメント コンテンツ (画像、スクリプト ファイル、CSS ファイルなどを含む) が完全に読み込まれたときにトリガーされ、処理関数が呼び出されます。

window.onload = 関数(){}
//またはwindow.addEventListener("load",function(){});

上記の例のように:

<本文>
    <スクリプト>
        window.onload = 関数(){
            var btn = document.querySelector('ボタン');
        btn.onclick = 関数(){
            alert('クリックしました!')
        }
        }
    </スクリプト>
    <button>クリック</button>
</本文>

クリック効果もこの時点で実現できます。

ここに画像の説明を挿入

以下の点に注意してください。

1. window.onloadを使用すると、ページ コンテンツがすべて読み込まれた後に onload が処理関数を実行するため、ページ要素の上に JS コードを記述できます。

2. 従来のwindow.onloadイベント登録方法は 1 回しか記述できません。window.onload イベントが複数ある場合は、最後のイベントが使用されます。

3. addEventListener を使用する場合、制限はありません。

この時点でクリック イベントもあり、その操作を要素の前に配置したい場合はどうすればよいでしょうか。

試してみましょう:

 <スクリプト>
        window.onload = 関数(){
            var btn = document.querySelector('ボタン');
        btn.onclick = 関数(){
            alert('もう一度クリックしました!')
        }
    }
        window.onload = 関数(){
           アラート('こんにちは')
        }
    </スクリプト>
    <button>クリック</button>
</本文>

印刷結果はどうなりますか?

ここに画像の説明を挿入

最初のイベントは 2 番目のイベントによって上書きされることがわかります。これは、次のように別の方法で操作できます。

document.addEventListener('DOMContentLoaded',function(){})

コードは次のとおりです:

 <スクリプト>
        document.addEventListener('DOMContentLoaded',function(){
            var btn = document.querySelector('ボタン');
            btn.onclick = 関数(){
                alert('もう一度クリックしました!')
            }
            アラート('こんにちは')
        })
    </スクリプト>
    <button>クリック</button>
</本文>

実行結果は次のとおりです。

ここに画像の説明を挿入

DOMContentLoadedイベントは、スタイルシート、画像、フラッシュなどを除いて、DOM が読み込まれたときにのみ発生します。この方法は、Internet Explorer 9 以降でのみサポートされています。ページに画像が多い場合、ユーザーのアクセスから onload のトリガーまでに時間がかかり、インタラクティブな効果が得られず、ユーザー エクスペリエンスに影響を及ぼします。この場合は、DOMContentLoaded イベントを使用する方が適切です。

2. ウィンドウサイズ調整イベント

多くのウェブサイトでは、ウィンドウのサイズを変更すると、それに応じて内部のコンテンツも変更されます。これはどのように行われるのでしょうか?ここでは、ウィンドウのサイズ変更イベントを使用します。

形式は次のとおりです。

//(1)
window.onresize = 関数(){}
//(2)
ウィンドウにイベントリスナーを追加します("サイズ変更",関数(){});

window.onresize はウィンドウのサイズ変更の読み込みイベントであり、トリガーされると処理関数が呼び出されます。

例えば:

ページ内にボックスがあります。ページの幅が 800 ピクセル未満の場合は、このボックスの色が紫色に変わります。

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
    <メタ文字セット="UTF-8">
    <meta http-equiv="X-UA-compatible" content="IE=edge">
    <meta name="viewport" content="width=デバイス幅、初期スケール=1.0">
    <title>ドキュメント</title>
    <スタイル>
        div {
            幅: 100ピクセル;
            高さ: 100px;
            背景色: 赤;
        }
    </スタイル>
</head>
<本文>
    <div></div>
   <スクリプト>
       div = document.querySelector('div')
       window.onresize = 関数(){
           コンソールログ(ウィンドウの内側の幅);
           if(window.innerWidth <= 800){
               div.style.backgroundColor = '緑';
           }
       }
   </スクリプト>
</本文>
</html>

印刷結果は次のとおりです。

ここに画像の説明を挿入

同様に、 window.addEventListener("resize",function(){})を通じて上記の操作を実行することもできますが、ここでは繰り返しません。

要約する

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • 一般的なイベントを処理するための JavaScript の使用に関する詳細な説明
  • JSイベントバインディングの一般的な例のまとめ
  • 一般的な JavaScript イベントの紹介
  • js モバイルイベントの基礎と一般的なイベントライブラリの詳細な説明
  • JavaScript イベントバインディングの一般的な方法とその長所と短所について簡単に説明します。
  • 最もよく使用されるJavaScriptイベントについて詳しく学ぶ

<<:  画像ブラインド表示の効果を実現するための純粋な CSS の例

>>:  MySQL5.7 シングルインスタンス自動起動サービスの設定プロセス

推薦する

JavaScript は単一のリンクリストプロセス分析を実装します

序文:複数の要素を格納するために、配列は最も一般的に使用されるデータ構造ですが、配列には多くの欠点も...

HTML タグに類似: strong および em、q、cite、blockquote

XHTML には似た機能を持つタグがいくつかあります。もちろん、ここでの類似性とは意味の類似性を指...

nginxリバースプロキシのマルチポートマッピングの実装

コードの説明1.1 http:www.baidu.test.com のデフォルトは 80 で、リバー...

vue の webpack -v エラー解決の概要

XiaobaiはVueについて学び、次にwebpackについて学び、そしてさまざまなものをインストー...

docker コンペ応募でよく使われるコマンドのまとめ

アカウントにログイン DOCKER_REGISTRY=registry.cn-hangzhou.al...

Vueはページを更新するために3つの方法を使用する

プロジェクトを作成しているときに、ユーザーがアクションを実行し、特定の状態を変更し、ページを更新して...

MySQLのスイッチングデータ保存ディレクトリの実装方法

MySQLのスイッチングデータ保存ディレクトリの実装方法今日、仕事中に、mysql が保存されている...

Vue3 ドラッグ可能な左パネルと右パネルの分割コンポーネントの実装

目次コンポーネントの分解左パネル右パネル入力パラメータの分解小道具スロット具体的な実装ドラッグする方...

nginx をベースにリロードなしでアップストリーム サーバーの動的な自動起動と停止を実装する方法

目次1. Consulクラスタをデプロイする1. 準備3. Consulクラスタを作成する4. 管理...

Tomcatの自動シャットダウンに関するバグ修正

序文最近、4 年間実行されている Java EE Web プロジェクトでは、システムが開けないという...

IDEA の Docker プラグインを介して SpringBoot プロジェクトをデプロイするプロセスの詳細な説明

1. Dockerリモート接続ポートを設定するサーバー上の docker.service ファイルを...

Vue h関数の使い方の詳しい説明

目次1. 理解2. 使用1. h() パラメータ2. 使い方が簡単3. カウンターケースを実装する4...

HTMLでマスクレイヤーを実装する方法 HTMLでマスクレイヤーを使用する方法

Web ページでマスク レイヤーを使用すると、繰り返しの操作を防ぎ、読み込みを促進できます。また、ポ...

JavaScript キャンバスで動的な点と線の効果を実現

この記事では、動的な点と線の効果を実現するためのJavaScriptキャンバスの具体的なコードを参考...

HTML テーブル マークアップ チュートリアル (4): 境界線の色属性 BORDERCOLOR

テーブルを美しくするために、テーブルにさまざまな境界線の色を設定できます。基本的な構文<テーブ...