以下のコードを使用して、ページロード後にいくつかのステートメントを実行しています。
<script type="text/javascript">
window.onload = function () {
newInvite();
document.ag.src="b.jpg";
}
</script>
しかし、このコードは正しく機能しません。いくつかの画像や要素がロードされていても、この関数は呼び出されます。欲しいのは、ページが完全にロードされたときに関数を呼び出すことです。
これはあなたのために働くかもしれません:
document.addEventListener('DOMContentLoaded', function() {
// your code here
}, false);
またはjqueryであなたの快適さ、
$(document).ready(function(){
// your code
});
$(document).ready()
はDOMContentLoadedで発生しますが、このイベントはブラウザ間で一貫して発生しているわけではありません。これが、jQueryがおそらくすべてのブラウザをサポートするための多大な回避策を実装する理由です。そしてこれは普通のJavascriptを使って振る舞いを「正確に」シミュレートすることを非常に難しくします(もちろん不可能ではありません)。
jeffrey SweeneyとJ Torresが示唆しているように、私は以下のような関数を起動する前にsetTimeout
関数を持つほうが良いと思います。
setTimeout(function(){
//your code here
}, 3000);
A)とプレーンJavaScript:
document.addEventListener('readystatechange', event => {
if (event.target.readyState === "interactive") { //same as: document.addEventListener("DOMContentLoaded"... // same as jQuery.ready
alert("All HTML DOM elements are accessible");
}
if (event.target.readyState === "complete") {
alert("Now external resources are loaded too, like css,src etc... ");
}
});
B)とjQuery:
$(function(){
alert("hello");
});
C)=
記号を使う)以下のメソッドは使わないでください:
document.onreadystatechange = function(){ alert("Hi"); }
他の同種宣言を上書きするからです。
JQueryを使用できる場合は、 load を見てください。その後、要素の読み込みが完了した後に関数を実行するように設定できます。
たとえば、単純な画像のあるページを考えます。
<img src="book.png" alt="Book" id="book" />
イベントハンドラは画像にバインドできます。
$('#book').load(function() {
// Handler for .load() called.
});
現在のウィンドウ上のすべての要素を読み込む必要がある場合は、次のようにします。
$(window).load(function () {
// run code
});
ページの読み込みが完了したという意味、「DOMの読み込み」または「コンテンツの読み込み」も混乱していませんか。 HTMLページでは、2つのタイプのイベントの後にloadイベントが発生する可能性があります。
DOMロード:ロードされたDOMツリー全体が最初から最後まで確実に行われるようにします。しかし、参照コンテンツを確実にロードしないでください。 img
タグで画像を追加したとします。そのため、このイベントはすべてのimg
が読み込まれたが、画像が正しく読み込まれたかどうかを確認します。このイベントを取得するには、次のように書きます。
document.addEventListener('DOMContentLoaded', function() {
// your code here
}, false);
あるいはjQueryを使う:
$(document).ready(function(){
// your code
});
DOMとコンテンツのロード後:DOMとコンテンツのロードも示します。 img
タグだけでなく、すべての画像や他の関連コンテンツもロードされるようにします。このイベントを取得するには、次のように書きます。
window.addEventListener('load', function() {...})
あるいはjQueryを使う:
$(window).on('load', function() {
console.log('All assets are loaded')
})
あなたがあなたのhtmlページでjs関数を呼びたいならば、onloadイベントを使います。 onloadイベントは、ユーザーエージェントがウィンドウまたはFRAMESET内のすべてのフレームのロードを終了したときに発生します。この属性は、BODY要素とFRAMESET要素と共に使用できます。
<body onload="callFunction();">
....
</body>
このようにして両方のケースを扱うことができます - ページが既にロードされているかどうか:
document.onreadystatechange = function(){
if (document.readyState === "complete") {
myFunction();
}
else {
window.onload = function () {
myFunction();
};
};
}
あるいは、あなたは以下を試すことができます。
$(window).bind("load", function() {
// code here });
これはすべての場合に機能します。これはページ全体がロードされたときにのみトリガーされます。
すでにjQueryを使っているのなら、これを試すことができます
$(window).bind("load", function() {
// code here
});
私が見つけた最良の答えは</body>
コマンドの直後に "ドライバ"スクリプトを置くことです。これは、上記のいくつかの解決策よりも最も簡単で、おそらくより普遍的です。
計画:私のページにはテーブルがあります。テーブル付きのページをブラウザに書き出し、JSでソートします。ユーザーは列見出しをクリックしてそれを再分類できます。
テーブルが</tbody>
コマンドで終了し、本体が終了したら、次の行を使用してソートJSを呼び出してテーブルを列3でソートします。ソートスクリプトはWebから取得されたため、ここでは再現されません。少なくとも来年の間は、JSを含むstatic29.ILikeTheInternet.com
でこれが動作しているのを見ることができます。ページ下部の「ここ」をクリックしてください。これでテーブルとスクリプトを含む別のページが表示されます。データが表示されてからすぐに並べ替えるのがわかります。少しスピードを上げる必要がありますが、基本は現在あります。
</tbody></body><script type='text/javascript'>sortNum(3);</script></html>
メーカーマイキー
window.onload = () => {
// run in onload
setTimeout(() => {
// onload finished.
// and execute some code here like stat performance.
}, 10)
}
JSフレームワークを使用していない場合は、このプロジェクトがブラウザ間の互換性を保ちながらdom ready状態にするための最良の方法です。
完全なページロード設定タイムアウト後に関数を呼び出す
setTimeout(function() {
var val = $('.GridStyle tr:nth-child(2) td:nth-child(4)').text();
for(var i, j = 0; i = ddl2.options[j]; j++) {
if(i.text == val) {
ddl2.selectedIndex = i.index;
break;
}
}
}, 1000);
これを試してください jQuery :
$(function() {
// Handler for .ready() called.
});