HTMLタグ要素と実行時間がすべてです。この例では、スクリプトはheadタグに配置されているため、スクリプトを実行すると、要素div#timerはまったく存在しません。
次に、2つの解決策があります。
DOMが複雑でなくimg
、ネットワークからフェッチする必要のあるタグや要素が含まれていない場合は、を使用するonload
必要はありません。次の2つの場合に使用できます。
- 画像や動画など、すべての要素が読み込まれるのを待つ必要があります。
- たとえば、サイトに広告を読み込むスクリプトなど、優先度の低いスクリプトの実行を遅らせたいとします。このスクリプトは、Webサイトや訪問者にとって重要ではなく、実行が遅れる可能性があります
一般にscript
、ドキュメントの最後にタグを付けることをお勧めします(したがって、使用する必要はありませんonload
)。これにより、Flash Of Unstyled Content(FOUC)が防止されます。Javascriptは、ブラウザのレンダリングエンジンをブロックします。したがって、ユーザーがコンテンツを利用できるようになる前にJavaScriptタグが配置されている場合(headタグ内を参照)、ブラウザーはJavaScriptタグを実行し、DOMはほとんど空になり、ユーザーにはこの実行時間中は空白のページしか表示されません。
また、jQuery.fn.ready
方法については、次の点に注意する必要があります。
$(document).ready(function() {
// my first useless function
console.log( "first", 1 );
});
$(document).ready(function() {
// my second useless function
// this function will throw an (intentional) error
console.log( "second", someUndefinedVariable );
});
$(document).ready(function() {
// my third useless function
// because the previous function contains an error
// this function will never be called
console.log( "third ", 3 );
});
それで、あなたがいくつかのプラグインを使用していて、いくつかの手書きのコードなどを持っているとしましょう。すべてのプラグインとコードがjQuery.fn.ready
メソッドを使用していて、何らかの理由で(たとえば、特定のブラウザーバージョンで、ある状況下で)関数がエラーをスローした場合、この関数の後のすべてのハンドラーが実行されることはありません...
また、そうすることで、最後にすべての「実際の」JavaScriptの実行を遅らせることになります。キューで実行するメソッドがたくさんある場合は、数秒間ブラウザをブロックすると、ユーザーが通知します。それ。