javascript - 我应该使用 window.onload 事件

标签 javascript html dom-events

也许这是一个重复的问题,但我想问。

我想制作一个不使用第三方库的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到我的直接函数,digitsField在加载页面或直到我调用APP.init()之前,标签仍未定义用于其他工作功能。我还注意到 Firebug 中的 DOM 选项卡中有一个全局行专门用于 onload事件使全局命名空间变得困惑。也许有更好的初始化方法APP.digitsField不使用 window.onload 到标签对象事件或第三方库?

让我知道你的想法。

最佳答案

加载所有内容(包括外部资源)时,将触发窗口 onload 事件。然而,您应该只需要等待 DOM 加载,因此您可以将处理程序附加到 DOMContentLoaded 事件:

document.addEventListener("DOMContentLoaded", function() {
    // code...
});

这应该适用于比 IE8 更新的浏览器(即 IE9 及更高版本)。

关于javascript - 我应该使用 window.onload 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27888326/

相关文章:

javascript - 尝试使用 offsetTop、offsetLeft 查找表的 X、Y 坐标,两者都收到 NaN

在平板电脑上长按/点击时触发 Javascript 事件

javascript - 解析 JSON 响应时出现问题

javascript - JavaScript 中的验证错误

css - 如何更改一个 DIV 字段而不影响其他字段?

javascript - 使用 Handsontable 时重复标题

javascript - 我们可以在禁用渲染的情况下运行 JavaScript 吗?

javascript - 这个 JavaScript/HTML 有什么问题

javascript - 在 JavaScript 中将字符串转换为格式化段落

javascript - Google 跟踪代码管理器 - 存储单击的 div/按钮的 ID