<script>
insideを使用して、外部スクリプトを実行してい<head>
ます。
ページが読み込まれる前にスクリプトが実行されるため<body>
、とりわけ にアクセスできません。ドキュメントが「読み込まれた」(HTML が完全にダウンロードされ、RAM 内にある) 後に JavaScript を実行したいと考えています。スクリプトの実行時にフックできる、ページの読み込み時にトリガーされるイベントはありますか?
<script>
insideを使用して、外部スクリプトを実行してい<head>
ます。
ページが読み込まれる前にスクリプトが実行されるため<body>
、とりわけ にアクセスできません。ドキュメントが「読み込まれた」(HTML が完全にダウンロードされ、RAM 内にある) 後に JavaScript を実行したいと考えています。スクリプトの実行時にフックできる、ページの読み込み時にトリガーされるイベントはありますか?
このイベントは、スタイル シート、画像、およびサブフレームの読み込みが完了するのを待たずに、最初の 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 リスト:
スクリプトにロード時に実行する関数を設定させる、適度に移植性のある、フレームワークではない方法:
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;
}
}
ボディ内に「onload」属性を入れることができます
...<body onload="myFunction()">...
または、jQueryを使用している場合は、次のことができます
$(document).ready(function(){ /*code here*/ })
or
$(window).load(function(){ /*code here*/ })
あなたの質問に答えてくれることを願っています。
$(window).load は、ドキュメントがページにレンダリングされた後に実行されることに注意してください。
<head>
スクリプトがドキュメント内にロードされている場合はdefer
、script タグで属性を使用できます。
例:
<script src="demo_defer.js" defer></script>
https://developer.mozilla.orgから:
延期する
このブール属性は、ドキュメントが解析された後、DOMContentLoaded を起動する前にスクリプトが実行されることをブラウザに示すために設定されます。
src 属性が存在しない場合 (つまり、インライン スクリプトの場合) は、この属性を使用してはなりません。この場合、効果はありません。
動的に挿入されたスクリプトで同様の効果を得るには、代わりに async=false を使用します。defer 属性を持つスクリプトは、ドキュメントに表示される順序で実行されます。
これは、ページが読み込まれた後に遅延された js 読み込みに基づくスクリプトです。
<script type="text/javascript">
function downloadJSAtOnload() {
var element = document.createElement("script");
element.src = "deferredfunctions.js";
document.body.appendChild(element);
}
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
else if (window.attachEvent)
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
これはどこに置くのですか?
</body>
HTML のタグの直前 (HTML ファイルの下部近く) にコードを貼り付けます。
それは何をするためのものか?
このコードは、ドキュメント全体が読み込まれるのを待ってから、外部ファイルを読み込むことを示しています
deferredfunctions.js
。
上記のコードの例を次に示します - JS のレンダリングを延期する
これは、javascript pagespeed google の概念の遅延読み込みに基づいて作成し、この記事のDefer loading javascriptからも引用しています
フックdocument.onload
または jQueryを見てください$(document).load(...)
。
作業中の<body onload="myFunction()">
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function myFunction(){
alert("Page is loaded");
}
</script>
</head>
<body onload="myFunction()">
<h1>Hello World!</h1>
</body>
</html>
jQueryを使用している場合は、
$(function() {...});
と同等です
$(document).ready(function () { })
または別の略記:
$().ready(function () { })
JQuery $function() が起動するイベントは何ですか?を参照してください。およびhttps://api.jquery.com/ready/
より複雑なページでは、window.onload が起動されるまでにすべての要素がロードされていないことがあります。その場合は、遅延させる関数の前に setTimeout を追加してください。エレガントではありませんが、うまくレンダリングできる単純なハックです。
window.onload = function(){ doSomethingCool(); };
なる...
window.onload = function(){ setTimeout( function(){ doSomethingCool(); }, 1000); };
document.onreadystatechange = function(){
if(document.readyState === 'complete'){
/*code here*/
}
}
ここを見てください:http://msdn.microsoft.com/en-us/library/ie/ms536957(v=vs.85).aspx
<body onload="aFunction()">
ページが読み込まれた後に呼び出されるように定義するだけです。スクリプト内のコードは で囲まれていaFunction() { }
ます。
$(window).on("load", function(){ ... });
.ready()は私に最適です。
$(document).ready(function(){ ... });
.load()は機能しますが、ページが読み込まれるまで待機しません。
jQuery(window).load(function () { ... });
私にはうまくいきません。次のインラインスクリプトが壊れます。また、jQuery 3.2.1 と他の jQuery フォークも使用しています。
ウェブサイトの読み込みオーバーレイを非表示にするには、次を使用します。
<script>
$(window).on("load", function(){
$('.loading-page').delay(3000).fadeOut(250);
});
</script>
特定のスクリプト ファイルに関数を記述し、onload 属性を使用して body 要素に呼び出すことができます。
例:
<script>
afterPageLoad() {
//your code here
}
</script>
script タグを使用して、HTML ページにスクリプトを呼び出します。
<script src="afterload.js"></script>
あなたの体の要素に; 次のように onload 属性を追加します。
<body onload="afterPageLoad();">
YUI ライブラリの使用(大好きです):
YAHOO.util.Event.onDOMReady(function(){
//your code
});
ポータブルで美しい!ただし、他の目的で YUI を使用しない場合 (ドキュメントを参照)、使用する価値はないと言えます。
注意: このコードを使用するには、2 つのスクリプトをインポートする必要があります
<script type="text/javascript" src="http://yui.yahooapis.com/2.7.0/build/yahoo/yahoo-min.js" ></script>
<script type="text/javascript" src="http://yui.yahooapis.com/2.7.0/build/event/event-min.js" ></script>
ダニエルが言うように、document.onload を使用できます。
さまざまな javascript フレームワーク (jQuery、Mootools など) は、カスタム イベント 'domready' を使用しますが、これはより効果的であると思います。JavaScript を使用して開発している場合は、フレームワークを利用することを強くお勧めします。フレームワークを使用すると、生産性が大幅に向上します。
asnyc
ページの読み込み後に外部スクリプトを読み込むのに役立つスクリプトタグの属性を使用することをお勧めします
<script type="text/javascript" src="a.js" async></script>
<script type="text/javascript" src="b.js" async></script>
このコードでページの読み込みをキャッチできます
<script>
console.log("logger saber");
window.onload = (event) => {
console.log('page is fully loaded');
document.getElementById("tafahomNameId_78ec7c44-beab-40de-9326-095f474519f4_$LookupField").value = 1;;
};
</script>
<script type="text/javascript">
$(window).bind("load", function() {
// your javascript event here
});
</script>