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 シングルインスタンス自動起動サービスの設定プロセス

推薦する

Nginx でバージョン番号と Web ページのキャッシュ時間を非表示にする方法

Nginx の最適化 - バージョン番号と Web ページのキャッシュ時間を非表示にするバージョン番...

Minio 軽量オブジェクト ストレージ サービスのインストールとブラウザの使用チュートリアル

目次導入インストール1. マウントするフォルダを作成する2. イメージをプルする3. コンテナを作成...

Linux システムをバックアップする docker コマンドの詳細な説明

tar バックアップ システム sudo tar cvpzf backup.tgz --exclud...

CSS は、小さな鋭角のチャット ダイアログ ボックスで鋭角の吹き出し効果を実現します。

1. CSS を使用して、小さな尖った角のチャット ダイアログ ボックスと尖った角の吹き出しを描画...

Ant Design Blazor コンポーネントライブラリのルーティング再利用マルチタブ機能

最近、Ant Design Blazor コンポーネント ライブラリにマルチタブ コンポーネントを実...

MYSQL から MARIADB へのプロジェクト移行に関するチュートリアル

データベース (MySQL) を準備します。すでに MySQL をお持ちの場合は、これを無視できます...

Vue+ElementUI はページング関数を実装します - mysql データ

目次1. 問題2. 解決策2.1 ページングコンポーネント2.2 データベースデータを取得する関数:...

mysql8.0 Windows x64 zip パッケージのインストールと構成のチュートリアル

MySQL 8 Windows版 zipインストール手順(ダウンロードアドレス) 1. ZIPファイ...

Nginx を使用してクロスドメイン Vue 開発環境を処理する方法

1. 需要正しい Cookie 配信と SSO テストを確実に実行できるように、ローカル テスト ド...

Linux sar コマンドの使用方法とコード例の分析

1. CPU使用率sar -p (一日中表示) sar -u 1 10 (1: 1秒ごと、10: 1...

ROS2のインストールとdocker環境の使い方について

目次Docker を使用する理由は何ですか? DockerのインストールROSイメージを取得するRO...

Docker で Oracle 11g イメージ構成をプルダウンする際の問題を分析する

1. イメージをプルするdocker pull レジストリ.cn-hangzhou.aliyuncs...

Docker を使用した Hadoop クラスターのデプロイに関する詳細なチュートリアル

最近、社内に Hadoop テスト クラスターを構築したいので、docker を使用して Hadoo...

Mac に Windows サービスを備えた仮想マシンをインストールする方法

1. 仮想マシンをダウンロードする公式ダウンロードウェブサイト: https://www.vmwar...

CSS3 はクールな 3D 回転遠近法効果を実現します

CSS3はクールな3D回転パースペクティブを実現します3D アニメーション効果はますます人気が高まっ...