Web技術の基礎

ブラウザが最初の画面を表示するまでの処理(クリティカルレンダリングパス)では、<head>の中に属性なしで書いた <script src="app.js"> があると、HTMLの解析がそこで止まる。この要素にdefer属性を付けたときの動作として、正しいものはどれか。

  1. Aダウンロードが終わりしだい、HTMLの解析を止めてすぐに実行され、複数のスクリプトの実行の順序は保証されない
  2. Bダウンロードも実行もされず、利用者がページを操作したときに初めて読み込まれる
  3. CHTMLの解析と並行してダウンロードされ、解析が終わった後に、文書に書かれた順に実行される
答えと解説を見る

正解:C. HTMLの解析と並行してダウンロードされ、解析が終わった後に、文書に書かれた順に実行される

ブラウザは、HTMLを解析してDOMを、CSSを解析してCSSOMを作り、2つを合わせて描画する内容を決め、要素の位置と大きさを計算(レイアウト)してから描画(ペイント)します。属性のないscript要素は、DOMを書き換える可能性があるため、ダウンロードと実行が終わるまでHTMLの解析を止めます。defer を付けると、ダウンロードは解析と並行して進み、実行は解析の後に、文書に書かれた順に行われます。async では、ダウンロードが終わりしだい実行されるので、順序は保証されません。

  • A. これは async 属性の動作です。defer では、解析の後に書かれた順に実行されます。
  • B. defer を付けてもスクリプトはすぐにダウンロードされ、利用者の操作を待たずに実行されます。
  • C. 正しい。解析を止めずにダウンロードし、解析の後に書かれた順に実行します。
この分野を解く 分野ページへ

Web技術の基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

Web技術の基礎のほかの問題

  1. 上のJavaScriptをブラウザで実行したとき、コンソールに表示される文字の順序として正しいものはどれか。
  2. ブラウザの同一オリジンポリシーで、https://www.example.com/app/index.html と同じオリジンとみなされるURLはどれか。
  3. https://app.example.com のページのJavaScriptが、fetch を使って https://api.example.net/orders へ、Content-Type: application/json の本文を付けたPOSTのリクエストを送ろうとしている。このときのCORSの動作として、正しいものはどれか。
  4. Service Workerの説明として、正しいものはどれか。
  5. スマートフォンにも対応するレスポンシブデザインのページで、<head>に <meta name="viewport" content="width=device-width, initial-scale=1"> を書く主な目的はどれか。