ページの読み込み後にJavaScriptを実行するにはどうすればよいですか?

受付中 プログラミング
2024-12-24
服部
<script>内部を使用して外部スクリプトを実行してい<head>ます。
ページが読み込まれる前にスクリプトが実行されるため、特ににアクセスできません<body>。ドキュメントが「ロード」された後(HTMLが完全にダウンロードされてRAM内にある)、JavaScriptを実行したいと思います。スクリプトの実行時にフックできるイベントはありますか?ページの読み込み時にトリガーされますか?
回答一覧
これらのソリューションは機能します: コメントで述べたように、deferを使用してください: また また document.onload = function ... あるいは window.onload = function ... 最後のオプションは目立たず、より標準的であると考えられているため、より良い方法であることに注意してください。
服部
ページの読み込みには複数の段階があることに注意してください。ところで、これは純粋なJavaScriptです 「DOMContentLoaded」 このイベントは、スタイルシート、画像、およびサブフレームの読み込みが完了するのを待たずに、最初のHTMLドキュメントが完全に読み込まれて解析されたときに発生します。この段階で、ユーザーのデバイスまたは帯域幅の速度に基づいて、画像とCSSの読み込みをプログラムで最適化できます。
DOMがロードされた後(画像とCSSの前)に実行されます: document.addEventListener("DOMContentLoaded", function(){ //.... });
注:同期JavaScriptはDOMの解析を一時停止します。ユーザーがページをリクエストした後、DOMをできるだけ速く解析したい場合は、JavaScriptを非同期にして、スタイルシートの読み込みを最適化できます。
ページの読み込みには複数の段階があることに注意してください。ところで、これは純粋なJavaScriptです 「DOMContentLoaded」 このイベントは、スタイルシート、画像、およびサブフレームの読み込みが完了するのを待たずに、最初のHTMLドキュメントが完全に読み込まれて解析されたときに発生します。この段階で、ユーザーのデバイスまたは帯域幅の速度に基づいて、画像とCSSの読み込みをプログラムで最適化できます。
DOMがロードされた後(画像とCSSの前)に実行されます:
document.addEventListener("DOMContentLoaded", function(){ //.... }); 注:同期JavaScriptはDOMの解析を一時停止します。ユーザーがページをリクエストした後、DOMをできるだけ速く解析したい場合は、JavaScriptを非同期にして、スタイルシートの読み込みを最適化できます。
"ロード" 非常に異なるイベントloadは、完全にロードされたページを検出するためにのみ使用する必要があります。DOMContentLoadedがはるかに適切な場所でloadを使用することは非常によくある間違いなので、注意してください。
すべてがロードされて解析された後に実行されます。
window.addEventListener("load", function(){ // .... });
MDNリソース:
https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded https://developer.mozilla.org/en-US/docs/Web/Events/load
すべてのイベントのMDNリスト:
https://developer.mozilla.org/en-US/docs/Web/Events
服部
スクリプトがドキュメント内にロードされている場合はdefer、scriptタグの属性を使用できます。 例:
服部
136 本体内に「onload」属性を配置できます ...... または、jQueryを使用している場合は、次のことができます $(document).ready(function(){ /*code here*/ }) or $(window).load(function(){ /*code here*/ }) それがあなたの質問に答えることを願っています。 $(window).loadは、ドキュメントがページにレンダリングされた後に実行されることに注意してください。
服部
JavaScript document.addEventListener('readystatechange', event => { // When HTML/DOM elements are ready: if (event.target.readyState === "interactive") { //does same as: ..addEventListener("DOMContentLoaded".. alert("hi 1"); } // When window loaded ( external resources are loaded too- `css`,`src`, etc...) if (event.target.readyState === "complete") { alert("hi 2"); } });
服部
jQueryについても同じです。 $(document).ready(function() { //same as: $(function() { alert("hi 1"); }); $(window).load(function() { alert("hi 2"); });
服部
スクリプトにロード時に実行する関数を設定させる、適度に移植性のある、フレームワークではない方法: if(window.attachEvent) { window.attachEvent('onload', yourFunctionName); } else { if(window.onload) { var curronload = window.onload; var newonload = function(evt) { curronload(evt); yourFunctionName(evt); }; window.onload = newonload; } else { window.onload = yourFunctionName; } }
服部
これは、ページが読み込まれた後の遅延js読み込みに基づくスクリプトです。
服部
より複雑なページで、window.onloadが起動されるまでにすべての要素がロードされていないことが時々あります。その場合は、関数を遅らせる前にsetTimeoutを追加してください。エレガントではありませんが、うまくレンダリングできる単純なハックです。 window.onload = function(){ doSomethingCool(); }; になります... window.onload = function(){ setTimeout( function(){ doSomethingCool(); }, 1000); };
服部
DOMContentLoadedイベントは、スタイルシート、画像、およびサブフレームの読み込みが完了するのを待たずに、最初のHTMLドキュメントが完全に読み込まれて解析されたときに発生します。 document.addEventListener('DOMContentLoaded', (event) => { console.log('DOM fully loaded and parsed'); }); ロードイベントは、スタイルシートや画像などのすべての依存リソースを含むページ全体がロードされたときに発生します。これは、リソースのロードが完了するのを待たずに、ページDOMがロードされるとすぐに起動されるDOMContentLoadedとは対照的です。 window.addEventListener('load', (event) => { console.log('page is fully loaded'); });
服部
比較 以下のスニペットでは、選択したメソッドを収集し、それらのシーケンスを示しています。備考 (X)はdocument.onload最新のブラウザではサポートされていません(イベントが発生することはありません) (F)を使用し、同時にwindow.onload(E)を使用すると、最初の1つだけが実行されます(2番目の1つをオーバーライドするため) (F)で指定されたイベントハンドラーは、追加のonload関数によってラップされます document.onreadystatechange(D)オーバーライドしないdocument .addEventListener('readystatechange'...)(C)おそらくcecasueonXYZevent-likeメソッドはaddEventListenerキュー(複数のリスナーを追加できる)から独立しています。おそらく、この2つのハンドラーの実行の間には何も起こりません。 すべてのスクリプトはコンソールにタイムスタンプをdiv書き込みますが、本文にもタイムスタンプを書き込むためのアクセス権を持つスクリプト(スクリプトの実行後に[フルページ]リンクをクリックして表示します)。 ソリューションreadystatechange(C、D)はブラウザーによって複数回実行されますが、ドキュメントの状態が異なります。 読み込み中-ドキュメントが読み込まれています(スニペットで起動されません) インタラクティブ-ドキュメントは解析され、前に起動されますDOMContentLoaded 完了-ドキュメントとリソースが読み込まれ、前に起動されますbody/window onload
服部
服部
特定のスクリプトファイルに関数を記述し、onload属性を使用してそれをbody要素に呼び出すことができます。 例: 次に、scriptタグを使用してスクリプトをhtmlページに呼び出します。 あなたの体の要素に; 次のようなonload属性を追加します。
服部
ページがロードされた後に呼び出されることを定義するだけです。スクリプト内のコードは、で囲まれていaFunction() { }ます。
服部
jQueryを使用している場合は、 $(function() {...}); と同等です $(document).ready(function () { }) または別の速記: $().ready(function () { })
服部
フックdocument.onloadまたはjQueryを見てください$(document).load(...)。
服部
作業中の

Hello World!

服部
document.onreadystatechange = function(){ if(document.readyState === 'complete'){ /*code here*/ } }
服部
このコードをjQueryライブラリで使用すると、これは完全に正常に機能します。 $(window).bind("load", function() { // your javascript event });
服部
$(window).on("load", function(){ ... }); .ready()は私に最適です。 $(document).ready(function(){ ... }); .load()は機能しますが、ページがロードされるまで待機しません。 jQuery(window).load(function () { ... }); 私にはうまくいきません、次のインラインスクリプトを壊します。また、他のjQueryフォークと一緒にjQuery3.2.1を使用しています。 ウェブサイトの読み込みオーバーレイを非表示にするには、次を使用します。
服部
このコードでページの読み込みをキャッチできます
服部
ドキュメントがJavascriptまたはJqueryを使用してロードされたかどうかを検出する方法に関する非常に優れたドキュメントがあります。 ネイティブJavascriptを使用すると、これを実現できます if (document.readyState === "complete") { init(); } これは、間隔内で行うこともできます var interval = setInterval(function() { if(document.readyState === 'complete') { clearInterval(interval); init(); } }, 100);
服部
\n
switch (document.readyState) { case "loading": // The document is still loading. break; case "interactive": // The document has finished loading. We can now access the DOM elements. var span = document.createElement("span"); span.textContent = "A element."; document.body.appendChild(span); break; case "complete": // The page is fully loaded. console.log("Page is loaded completely"); break; } Jqueryの使用DOMの準備ができているかどうかのみを確認するには // A $( document ).ready() block. $( document ).ready(function() { console.log( "ready!" ); }); すべてのリソースがロードされているかどうかを確認するには、window.loadを使用します $( window ).load(function() { console.log( "window loaded" ); });
服部
このコードはうまく機能します。 ただし、window.onloadメソッドにはさまざまな依存関係があります。したがって、常に機能するとは限りません。
服部
asnycページの読み込み後に外部スクリプトを読み込むのに役立つスクリプトタグの属性を使用することをお勧めします
服部
服部