javascript - 尝试与 window.onload 一起执行两个 JavaScript 文件

标签 javascript onload

我有两个独立的 JavaScript 文件链接到一个 HTML 文档,当我运行它时,似乎第二个 JS 文件覆盖了第一个。我认为这与每个文件中调用的 window.onload 有关,但我不确定如何解决这个问题。

我尝试在其中一个 JS 文件上使用 window.onloadend,在另一个 JS 文件上使用 window.onload,但结果相同,window.onloadend 是唯一执行的文件。

文件1.js

function init() {
    applyFunction();
    prefillForm();
    var applyForm = document.getElementById("applyForm");
    applyForm.onsubmit = validate;
}

window.onload = init;

文件2.js

function init() {
    currentPage();
    timer();
}

window.onload = init;

最佳答案

每当您分配给 on- 属性时,您都会覆盖之前附加到该属性的任何内容,并且当事件触发时,只有最新的处理程序才会运行。使用 addEventListener 代替:

window.addEventListener('load', init);

(将其替换两个文件中的 .onload 行)

或者,如果您没有等待整个文档加载(包括图像等内容),您可以改为监听 DOMContentLoaded,这会更快地触发。尽管并非所有资源都已下载,但 DOM 和所有元素都将被填充:

window.addEventListener('DOMContentLoaded', init);

关于javascript - 尝试与 window.onload 一起执行两个 JavaScript 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55888796/

相关文章:

javascript - 如何在asp.net用户控件中动态附加脚本标签?

javascript - 页面加载时触发 JS 函数不起作用

javascript - Angular 1.5 组件 onChanges 不起作用

javascript - 在单引号或双引号外用分号分隔的正则表达式

javascript - 在页面加载时将焦点设置在 HTML 输入框上

javascript - Meteor iScroll 5 初始化

javascript - 如何制作不同颜色的价格

javascript - RefluxJS 存储在调用 trigger() 时能否指示哪个属性已更改?

javascript - 如何在 FabricJS 中检测 Canvas 上的空白区域?

javascript - 如何将这个 onclick 动画变成 onload 动画?