尝试与window.onload一起执行两个JavaScript文件
我有两个单独的JavaScript文件链接到一个HTML文档,当我运行它时,第二个JS文件似乎覆盖了第一个。我认为这与在每个文件中调用window.onload有关,但不确定如何解决这个问题 我尝试在其中一个JS文件上使用window.onloadend,在另一个JS文件上使用window.onload,但结果相同,window.onloadend是唯一执行的文件 file1.js尝试与window.onload一起执行两个JavaScript文件,javascript,onload,Javascript,Onload,我有两个单独的JavaScript文件链接到一个HTML文档,当我运行它时,第二个JS文件似乎覆盖了第一个。我认为这与在每个文件中调用window.onload有关,但不确定如何解决这个问题 我尝试在其中一个JS文件上使用window.onloadend,在另一个JS文件上使用window.onload,但结果相同,window.onloadend是唯一执行的文件 file1.js function init() { applyFunction(); prefillForm();
function init() {
applyFunction();
prefillForm();
var applyForm = document.getElementById("applyForm");
applyForm.onsubmit = validate;
}
window.onload = init;
file2.js
function init() {
currentPage();
timer();
}
window.onload = init;
无论何时在-属性上分配
,都将覆盖以前附加到该属性的内容,并且当事件激发时,只有最新的处理程序将运行。改用addEventListener
:
window.addEventListener('load', init);
(将其放在两个文件中的.onload
行的位置)
或者,如果您不必等待加载整个文档(包括图像之类的内容),您可以改为侦听DOMContentLoaded,这将更快地触发。将填充DOM和所有元素,但并非所有资源都已下载:
window.addEventListener('DOMContentLoaded', init);
或者,最终您可以将Init
函数重命名为非唯一函数,并在HTML中调用一个匿名函数,该函数按顺序调用这两个函数。在HTML中,将其称为:
load = () => {
Init1();
Init2();
}
正确的做法是将脚本放在
标记的末尾,而不是头的开头,这样可以完全解决onload/DOMContentLoaded检查问题,只需编写代码。还考虑在模块中多个脚本中进行工作:]我肯定会记下下一次做的,谢谢!