需HTML页面优先于JS加载,尝试DOMContentLoaded、defer等方法无效如何解决?
问题排查结果
你所遇到的代码不生效问题和页面加载时机无关,是JS代码本身存在变量名不匹配的语法错误:你第一行声明存储磅数的变量名为lbs,但第二行计算时误用了未声明的pounds变量,导致代码直接抛出异常终止运行,因此你会误以为加载时机的设置没有生效。
修正后的可运行代码
var lbs = prompt("What is the weight in pounds (lbs)?") var kg = lbs * 0.454 alert("That is: " + kg + " kilograms") console.log("Conversion completed")
加载时机方案补充说明
- 你已经尝试的三种方案:绑定
DOMContentLoaded事件、将script标签放在body标签末尾、给script标签添加defer属性,都是符合规范的、保证JS在DOM加载完成后执行的方案,本身没有问题,修正代码错误后都可以正常生效。 - 如果你需要等待页面所有资源(包括图片、字体等非DOM资源)全部加载完成后再执行JS,可以使用
window.load事件:
window.addEventListener("load", function() { // 业务代码写在这里 })
内容的提问来源于stack exchange,提问作者tayzee
相关产品推荐
相关产品推荐

