情况如下:我有 2 页:
- 1 个 html 页面
- 1 x 外部 Javascript
现在在 html 页面中,将有内部 Javascript 编码以允许放置window.onload
和其他页面特定的方法/功能。
window.onload
但是,在外部 Javascript 中,我希望在触发事件之前完成某些事情。这是为了允许首先初始化自定义组件。
window.onload
有没有办法确保在触发事件之前在外部 Javascript 中进行初始化 ?
我问这个的原因是试图制作可重用的代码(构建一次 - 全部使用),外部脚本必须在主 html/jsp/asp 中的 Javascript 之前检查它是否处于“顺序/检查”中/PHP 页面接管。而且我也不是在 jQuery @_@ 中寻找解决方案
以下是我浏览过的有关 Stack Overflow 的一些链接以寻求解决方案:
有人可以帮助或指导我找到解决方案,您的帮助将不胜感激。
[更新回复 - 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>
加载器.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