Итак, вот что:
У меня 2 страницы:
- 1 x html страница
- 1 x внешний javascript
Теперь на странице html будет внутреннее javascript-кодирование, позволяющее размещать "window.onload" и другие специальные методы/функции страницы.
Но во внешнем javascript я хочу, чтобы некоторые вещи выполнялись до того, как событие window.onload запускается. Это позволит сначала инициализировать персонализированные компоненты.
Есть ли способ обеспечить инициализацию во внешнем javascript перед запуском события window.onload?
Причина, по которой я попросил это, - попытаться сделать многоразовый код (построить один раз - использовать все), к которому внешний script должен проверить, что он находится в 'order/check' перед javascript в main html/jsp/asp/php страница берет верх. А также я не ищу решение в JQuery @_ @
Вот некоторые из ссылок на stackoverflow.com. Я просмотрел для решения:
- Javascript - Как определить, загружен ли документ (IE 7/Firefox 3)
- Как проверить, полностью ли загружена страница (скрипты и все)?
- Выполнение Javascript при полной загрузке страницы
Может ли кто-нибудь помочь или направить меня к решению, ваша помощь будет оценена в мужестве величия, пожалуйста - спасибо: D
С уважением, Крейг
<ч/" > [обновленный ответ - 19 ноября 2012]
Привет всем, спасибо за советы и предлагаемые решения, они все были полезны при поиске и тестировании для жизнеспособного решения. Хотя я чувствую, что не на 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