Javascript 标头中的异步脚本使其他外部脚本和函数在正文中调用;“未定义”;
在我正在处理的站点的标题中,我调用了一大堆外部Java脚本(jQuery、插件、站点功能的主js文件等)。我决定在它们上面加上Javascript 标头中的异步脚本使其他外部脚本和函数在正文中调用;“未定义”;,javascript,jquery,html,dom,asynchronous,Javascript,Jquery,Html,Dom,Asynchronous,在我正在处理的站点的标题中,我调用了一大堆外部Java脚本(jQuery、插件、站点功能的主js文件等)。我决定在它们上面加上async=“async”标签,以提高Chrome和Firefox的性能 我注意到这样做之后,在站点主体的各个部分中调用的一些函数在错误控制台中被标记为“未定义”。我在IE和Opera(不支持async属性的浏览器)中测试了该站点,它运行正常。然后,我从所有脚本中删除了async属性,它在Chrome和Firefox中再次正常工作 我猜我对async属性的使用会导致一些脚
async=“async”
标签,以提高Chrome和Firefox的性能
我注意到这样做之后,在站点主体的各个部分中调用的一些函数在错误控制台中被标记为“未定义”。我在IE和Opera(不支持async属性的浏览器)中测试了该站点,它运行正常。然后,我从所有脚本中删除了async属性,它在Chrome和Firefox中再次正常工作
我猜我对async属性的使用会导致一些脚本在调用其他脚本之前完成加载,而已经完成加载的脚本是具有依赖项(如jQuery或插件)但尚未完成加载的脚本,这将抛出我看到的“未定义”错误
如果我对这一点的理解是错误的,请纠正我。如果我认为正在发生的是实际发生的事情,在保留所有脚本标记上的async属性的同时,是否还有其他解决方法?您希望以特定顺序加载内容
async
删除该顺序,并以您最不希望的顺序加载内容。这是有道理的,但是async属性如何证明对任何脚本都有效什么剧本?似乎很多脚本依赖于事件和某些对象“准备就绪”,而且在这些情况下,async属性似乎会把很多事情搞砸…@Aaron我不确定。我不亲自使用它们,因为我总是希望我的代码按照我放置它的顺序加载。我肯定希望库总是首先加载,因为我看到的js代码的其余部分可能需要它们。也许我对这个属性期望太高了。我想立即加载库和插件确实是个好主意。我将坚持这样做,并异步加载其他不太重要的脚本。谢谢你的帮助!