今日の Web アプリケーションはますます複雑になっており、ユーザーがトリガーするさまざまなイベントに応答する必要があるため、HTML ページの DOM 要素にイベント リスニング関数を追加することが避けられません。イベント リスニング関数を DOM 要素にバインドする方法: 1: ページ html:
2: ページ html:
JavaScript:
コードをコピー
コードは次のとおりです: document.getElementById (" btn").onclick = test;
3: ページ HTML:
JavaScript:
コードをコピー
コードは次のとおりです。 document.getElementById(“btn”).atachEvent(“onclick”,test); //ie
これら 3 つのメソッドの機能的効果と違いは誰もが知っているので、ここでは詳しく説明しません。ただし、これら 3 つのメソッドはページのレンダリング速度とリソース消費に大きく異なります。 .
テキストの背後にある HTML コードは、IE ブラウザーで開き、さまざまなコード セグメントに注釈を付けることでページの実行効果を確認できます。最も効率が低く、ページ ノードの増加に伴い、IE7 で実行するとページのレンダリング時間は約 670 ミリ秒になります。 2 番目の方法の方が明らかに優れており、IE7 では約 250 ミリ秒です。 3 番目の方法が最適です。Web フロントエンド開発で推奨される標準的な書き込み方法でもあります。 次に、イベント バインディングのロジックを削除すると、所要時間は 188 ミリ秒になります。バインディング イベントを使用しない DOM 要素のレンダリングはわずか 125 ミリ秒であり、表示されるイベント バインディングの時間消費は依然として非常に大きく、特に最初のメソッド (Dom Level 0 Event) が最も時間がかかります。さらに、各コードを実行するときに、タスク マネージャーを開いて、ブラウザーに対応するプロセスを見つけて、コードの実行時の CPU 消費量とメモリ使用量を確認するとよいでしょう。 Dom レベルが確認できます。 0 イベントは CPU を大幅に消費します。 メモリ消費量の分析 : ブラウザを再度開きます。空白ページのメモリ使用量は約 37M、ページ後の仮想メモリは 28M です。レンダリングされます: 1 メモリ使用量は 54M、仮想メモリは 41M 2 メモリ使用量は 44M、仮想メモリは 31M 3 メモリ使用量は 44M、仮想メモリは 31M Dom Level 0 Event のメモリ消費量が他のメソッドをはるかに上回っていることがわかります。 Dom Level 0 Event はなぜこのようにシステム リソースを消費するのでしょうか。簡単な分析を行います。 分析を容易にするために、コード を変更して、ページを実行します。 IE のスクリプト デバッガーでは、スタック呼び出し項目が見つかります。この関数はどこから来たのでしょうか? ブラウザが Dom レベル 0 イベントをバインドすると、自動的に生成されることがわかります。コードを含む匿名関数を作成し、この匿名関数をイベントにバインドします。 Copy code コード