状況は次のとおりです。2ページあります。
- 1xhtmlページ
- 1x外部Javascript
window.onload
これで、htmlページに、および他のページ固有のメソッド/関数の配置を可能にする内部Javascriptコーディングがあります。
ただし、外部Javascriptでは、window.onload
イベントがトリガーされる前に特定の処理を実行する必要があります。これは、カスタマイズされたコンポーネントを最初に初期化できるようにするためです。
window.onload
イベントがトリガーされる前に外部Javascriptで初期化が行われるようにする方法はあり ますか?
私がこれを尋ねた理由は、再利用可能なコードを作成しようとするためです(一度ビルドすると、すべてを使用します)。外部スクリプトは、メインのhtml / jsp/aspのJavascriptの前に「order/check」にあることを確認する必要があります。 /PHPページが引き継ぎます。また、jQuery @_@で解決策を探していません。
解決策を探すために閲覧したStackOverflowのリンクの一部を次に示します。
- Javascript-ドキュメントがロードされたかどうかを検出する方法(IE 7 / Firefox 3)
- ページが完全にロードされているかどうか(スクリプトとすべて)を確認するにはどうすればよいですか?
- ページが完全に読み込まれたときにJavascriptを実行する
誰かが私を助けたり、解決策に導いたりできますか?あなたの助けは大いに感謝されます。
[更新された応答-2012年11月19日]
みなさん、こんにちは。アドバイスと提案された解決策に感謝します。これらはすべて、実行可能な解決策の検索とテストに役立ちました。私は自分の結果に100%満足しているわけではないと感じていますが、あなたのアドバイスと助けが私を解決策に近づけ、実際に同様の状況で他の人を助けるかもしれないことを知っています。
これが私が思いついたものです:
test_page.html
<html>
<head>
<title></title>
<script type="text/javascript" src="loader.js"></script>
<script type="text/javascript" src="test_script_1.js"></script>
<script type="text/javascript" src="test_script_2.js"></script>
<script type="text/javascript">
window.onload = function() {
document.getElementById("div_1").innerHTML = "window.onload complete!";
}
</script>
<style type="text/css">
div {
border:thin solid #000000;
width:500px;
}
</head>
<body>
<div id="div_1"></div>
<br/><br/>
<div id="div_2"></div>
<br/><br/>
<div id="div_3"></div>
</body>
</html>
loader.js
var Loader = {
methods_arr : [],
init_Loader : new function() {
document.onreadystatechange = function(e) {
if (document.readyState == "complete") {
for (var i = 0; i < Loader.methods_arr.length; i++) {
Loader.method_arr[i]();
}
}
}
},
load : function(method) {
Loader.methods_arr.push(method);
}
}
test_script_1.js
Loader.load(function(){initTestScript1();});
function initTestScript1() {
document.getElementById("div_1").innerHTML = "Test Script 1 Initialized!";
}
test_script_2.js
Loader.load(function(){initTestScript2();});
function initTestScript2() {
document.getElementById("div_2").innerHTML = "Test Script 2 Initialized!";
}
これにより、イベントハンドラーを呼び出す前にスクリプトが呼び出されるようにwindow.onload
なりますが、ドキュメントが最初にレンダリングされるようにもなります。
この可能な解決策についてどう思いますか?
助けと助けてくれてありがとう:D