多くの人はすでに Javascript の使用に習熟していますが、defer を見たときに、それが何に使用されているかがわからない可能性があります。また、多くの人がそのような問題に遭遇し、他の JS を直接実行して DOM オブジェクトを操作し、常に Object を報告する必要があります。 not found エラー。誰もが知っているように、その理由はページがまだロードされておらず、js 操作オブジェクトがまだダウンロード中であるためです。しかし、多くの人は、defer タグを追加することでこの問題を簡単に解決できることを知りません。
<script src="../CGI-bin/delscript.js" 遅延></script>
defer の機能は、オブジェクトが見つからないという問題 (ちょっとした問題) を回避するために、ドキュメントがロードされた後にスクリプトを実行することです。
次のようにコードをコピーします。
<button id="myButton" onclick="alert('ok')">テスト</button>
<スクリプト>
myButton.click();
</script>
<スクリプト>
myButton.click();
</script>
<button id="myButton" onclick="alert('ok')">テスト</button>
<スクリプトの延期>
関数 document.body.onload() {
アラート(document.body.offsetHeight);
}
</script>
defer を追加すると、ページが完全に読み込まれた後に実行されることを意味します。これは window.onload と同等ですが、アプリケーションでは window.onload よりも柔軟です。
Defer は、スクリプトの力における「縁の下の力持ち」です。これは、スクリプト セグメントにすぐに実行する必要のないコードが含まれていることをブラウザに伝え、SRC 属性と組み合わせて使用すると、これらのスクリプトがバックグラウンドでダウンロードされ、コンテンツがフォアグラウンドで表示されるようにすることもできます。通常通りユーザーに。
-- ただし、ドキュメントがロードされた後にスクリプトを実行します。
次の 2 つの点に注意してください。
1. document.write は直接出力効果を生み出すため、遅延タイプのスクリプト セグメント内で document.write コマンドを呼び出さないでください。
2. また、遅延スクリプトセグメントには、即時実行スクリプトで使用するグローバル変数や関数を含めないでください。
パフォーマンスを最適化する一般的な方法は、スクリプトをすぐに実行する必要がない場合に、<SCRIPT> タグに「defer」属性を設定することです。 (即時スクリプトはファンクション ブロックに含まれていないため、読み込みプロセス中に実行されます。) 「defer」属性を設定した後、IE はスクリプトが読み込まれて実行されるのを待つ必要がありません。こうすることで、ページの読み込みが速くなります。一般に、これは、即時スクリプトが関数ブロックに配置され、ドキュメントまたは本文オブジェクトの onload ハンドラーで関数を処理するのが最適であることも意味します。このプロパティは、ボタンをクリックしたりマウスを特定の領域に移動したりするなど、ユーザーのアクションに依存するスクリプトがある場合に役立ちます。ただし、ページの読み込み中または読み込み後に実行する必要があるスクリプトがいくつかある場合、defer 属性を使用するメリットはあまり大きくありません。
スクリプトの defer 属性は、デフォルトでは false です。 『DHTML プログラミング ガイド』の説明によると、Defer 属性は次のように記述されています。
設計時にこの属性を使用すると、ブラウザーがスクリプトを解析して実行する必要がなくなり、代わりにページのダウンロードと解析を続行できるため、ページのダウンロード パフォーマンスが向上します。
つまり、スクリプトの作成時に defer 属性を追加すると、ブラウザはスクリプトのダウンロード時にすぐに処理する必要がなく、ページのダウンロードと解析を継続するため、ダウンロードのパフォーマンスが向上します。
そのような状況はたくさんあります。たとえば、多数の JavaScript 変数を定義する場合、または処理する必要がある参照ファイル (.inc) に多数のスクリプトを記述する場合は、これらのスクリプトに defer 属性を追加すると、パフォーマンスの向上に確実に役立ちます。 。
例は次のとおりです。
次のようにコードをコピーします。
<script language="javascript" 遅延>
var オブジェクト = 新しい Object();
....
</script>
defer 属性のデフォルトは false であるため、ここでは
<script language="javascript" 遅延>
defer 属性を明示的に宣言することは、次と同等です。
<script language="javascript" defer=true>
defer 属性を宣言した後、他の変数が defer スクリプト ブロック内の変数を参照しているかどうかを判断する必要があります。そうしないと、スクリプト エラーが発生します。