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

推薦する

ブラウザでTIF形式の画像を表示する方法

ブラウザはTIF形式の画像を表示しますコードをコピーコードは次のとおりです。 <html>...

CentOS 7 での Docker プロキシの設定 (Linux での Systemd サービスの環境変数設定)

Docker デーモンは、 HTTP_PROXY 、 HTTPS_PROXY 、およびNO_PRO...

ウェブページを最適化してメモリとCPUの使用率を削減

一部の Web ページは大きく見えなくても開くのに非常に時間がかかる場合があります。一方、他の We...

MySQL の自己結合重複排除に関する注意事項

機能シナリオを簡単に説明しましょう。データ行フィールドは次のとおりです。名前開始日時タイプこの表では...

html オプション 無効 選択 選択 無効 オプションの例

コードをコピーコードは次のとおりです。 <選択> <オプション値="&q...

Reactのref属性を深く理解する方法

目次概要1. Refsオブジェクトの作成1.1 React.createRef() 1.2React...

JavaScript で Webpack を使用するチュートリアル

目次0. Webpackとは1. Webpackの使用2. Webpackのコアコンセプト2.1 エ...

CSS3実践手法のまとめ(推奨)

1. 丸い境界線: CSSコードコンテンツをクリップボードにコピー境界線の半径: 4px ; 2....

ウェブフロントエンドに対する一般的な攻撃とその防止方法

ウェブサイトのフロントエンド開発で発生するセキュリティ問題は、クライアントブラウザで実行されるコード...

Linux での scp および sftp コマンドの詳細な説明

目次序文1. SCPの使用法2. sftpを使用する3. scp と sftp の違いは何ですか?ど...

要素 UI に基づいてクエリ コンポーネントを段階的にカプセル化する方法

目次関数基本的なクエリ関数クエリ条件の初期化ページのレンダリングクエリと表示の最適化をさらに強化プル...

CSS の複数行テキストがオーバーフローする場合の省略記号の例

複数行のテキストがオーバーフローすると省略記号が表示されますこの記事では 2 つの方法を推奨します。...

iframeを使用してページを呼び出すとページがキャッシュされるかどうかの簡単な分析

最近、毎日変更されるページを iframe を使用して呼び出す必要があるプロジェクトがあります。その...

VMware ワークステーション 12 に Ubuntu 14.04 (64 ビット) をインストール

1. インストール環境コンピュータモデル: Lenovo Y471a (i5) ノートパソコンシステ...

HTMLテキスト内のすべてのタグを置き換える方法

(?i) は大文字と小文字を区別しないことを意味します。大文字と小文字をすべて置き換えます。 htm...