- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JS イベント処理が完了するタイミングについて)
JSイベント処理の完了タイミングと記述方法について
このQ&Aのポイント
- JavaScriptのDOMContentLoadedイベントリスナの処理が完了するタイミングについて質問です。画面が表示される前に処理を完了させたい場合や、スクリプトの記述位置についても懸念があるようです。
- DOMContentLoadedイベントリスナは、画面が表示される前(loadの前)に処理が完了しますか。また、スクリプトの記述位置には違いがあるのでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
(1) 処理A はHTML読み込み・DOM解析完了後に非同期で処理されるため、画像読み込みやレンダリングより時間が掛かる処理内容だった場合は画面表示後に完了する可能性が有ります。 (2) 記述位置によって挙動に違いがあります。 ブラウザはHTMLを上から解析しながら逐次処理を行うため、<head>内に記述した場合は<bosy>内の解析が終わっておらず特定のタグを指定して処理しようとしても見つけられない場合があります。 一方</body>の直前に書いた場合は、それより上に書かれているタグは読み込みが完了しているので必ず見つけられると言う事になります。 質問(1)で書かれているようなイベントリスナを使ってJavaScriptを記述するのは、<head>内に処理を記述してもタグが見つからないと言った問題が起きないようにする事が目的です。
その他の回答 (1)
- t_ohta
- ベストアンサー率38% (5238/13705)
回答No.2
> 質問(1)のようなイベントリスナの形式で書いている限りは、 > どの位置に記述しても、処理Aの実行タイミングに違いは無い > と理解しましたが、正しいでしょうか。 イベントの種類次第ですが、書く場所が悪ければイベント発火後にJavaScriptが読み込まれるような事になってしまうと処理されない事もあり得ます。 (最近のブラウザは賢いから大丈夫だと思うけど) また、JavaScriptを外部ファイルにして読み込ませる場合は、読み込みの時間もあるので<head>内に書いてイベントリスナで制御する方がいいかもしれません。(書き方の好みにもなってしますが)
質問者
お礼
迅速なご回答、あらためて感謝申し上げます。 いろんなケースを想定されており、とても参考になりました。
お礼
早速、わかりやすくご丁寧にご回答いただき、ありがとうございます。 (1)について、よく理解できました。 画面表示後に完了してしまう可能性がある以上、 そういった処理はサーバーサイドであらかじめ完了させておく など、代替案を検討いたします。 (2)については、 質問(1)のようなイベントリスナの形式で書いている限りは、 どの位置に記述しても、処理Aの実行タイミングに違いは無い と理解しましたが、正しいでしょうか。