也许这是一个重复的问题,但我想问。
我想制作一个不使用第三方库的JS应用程序,目的是在浏览器中学习JS事件。
所以我这样构造我的应用程序:
var APP = APP || (function (global) {
return {
digitsField: {},
// other properties, methods
init: function (config) {
try {
this.digitsField = global.getElementById('digitsField');
return this;
} catch (error) {
console.log(error.message);
return false;
};
}
};
} (window.document));
我的html页面看起来像这样:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="css/style.css">
<script type="text/javascript" src="js/script.js"></script>
</head>
<body onload="APP.init({});">
<input type="text" value="0" class="textField" readonly="true" id="digitsField"/>
// other html tags
</body>
</html>
虽然我将window.document发送到我的直接函数,但是在页面加载之前或直到我调用APP.init()函数之前,digitsField标记仍未为其他工作定义。我还在firebug中注意到,在DOM选项卡中,有一个专门用于onload事件的全局行,这种行使全局名称空间混乱。也许有更好的方法可以在不使用window.onload事件或第三方库的情况下将APP.digitsField初始化为标签对象?
让我知道你的想法。
加载所有内容(包括外部资源)时,将触发window onload事件。但是,您只需要等待DOM加载,即可为DOMContentLoaded
事件附加处理程序:
document.addEventListener("DOMContentLoaded", function() {
// code...
});
这应该可以在比IE8(因此IE9及更高版本)更新的浏览器中使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句