JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

HTMLの

defer属性は、スクリプトの実行タイミングをページの読み込み後に遅らせるために指定する属性です。この属性は外部スクリプト(src属性を持つscriptタグ)にのみ有効で、値を持たないブール型属性として記述します。

defer属性の基本的な動作

defer属性が付与されたスクリプトは、以下のような流れで処理されます。

  • HTMLの解析中にスクリプトファイルのダウンロードが並行して開始される
  • HTMLドキュメントの解析(パース)が完了した後、DOM構築が終わってからスクリプトが順番に実行される
  • 複数のdefer付きスクリプトがある場合、記述された順序どおりに実行されることが保証される

そのため、deferを使えばスクリプトの読み込みがページ表示をブロックすることなく、かつDOMへのアクセスも安全に行えるようになります。<body>の末尾にscriptタグを置く代替手法と似た効果がありますが、外部スクリプトの並列ダウンロードという点でより効率的です。

使用例

次のコードは、defer属性の基本的な使い方を示しています。

<!DOCTYPE html>
<html>
<body>
  <script src="defer_test.js" defer></script>
  <p>deferを使用しているため、外部ファイルは後から読み込まれます</p>
</body>
</html>

この例では、defer_test.jsはHTMLの解析が完了した時点で実行されます。ページのレンダリングを妨げることなくスクリプトを読み込めるため、ページの表示速度向上にも役立ちます。

async属性との違い

よく比較されるのがasync属性です。両者の主な違いは以下のとおりです。

  • defer:ダウンロードは並行、実行はHTML解析完了後・記述順に実行
  • async:ダウンロードは並行、ダウンロード完了後すぐに実行(順序は保証されない)

DOMの構築を前提としたスクリプトや、他のスクリプトとの依存関係がある場合はdeferを、広告やアクセス解析など独立性の高いスクリプトにはasyncを使うのが一般的です。

  1. PythonのMatplotlib.pyplot.quiverの仕組みと使い方をわかりやすく解説

    Matplotlib.pyplot.quiverとは?quiverは、Matplotlibが提供する矢印(ベクトル)を描画するための関数です。2次元平面上にベクトル場を可視化したい場合に非常に便利で、物理シミュレーションや流体解析などの分野でよく使われています。各ベクトルは始点(x, y)と成分(u, v)によって定義され、指定した位置から矢印として描かれます。以下の手順でquiverを使ったベクトルの描画を行うことができます。図のサイズを設定し、サブプロット間および周囲の余白を調整します。NumPy配列を使ってベクトルの座標データを作成します。x、y、u、v の各データポイントを取得します。

  2. Snapchatの仕組みとは?基本用語から使い方まで初心者向けに徹底解説

    モバイルメッセージアプリの世界に革命をもたらしたと言えば、それはSnapchat(スナップチャット)についての言葉として決して大げさではありません。Snapchatが登場する以前、友達とこんなユニークな方法でコミュニケーションができると想像した人はほとんどいませんでした。送った画像や動画が自動的に消えるという「自己消滅型メッセージ」という独自のコンセプトにより、Snapchatは従来のメッセージアプリやSNSとは一線を画す存在となっています。2011年の登場以来、Snapchatは1日あたり1億8000万人以上のアクティブユーザーを抱える、世界で最も人気のあるアプリの一つへと成長しました。また