我正尝试在head部分异步加载javascript。在开发人员控制台中加载页面后,我出现错误“未定义jQuery”。在一两次刷新之后,脚本就会加载并正常工作。在脚本标记中不使用"async“也可以。为什么会发生这种情况,有没有办法解决这个问题。提前感谢
发布于 2016-08-17 18:10:32
正如Dellirium所说,JQuery需要放在需要它的javascript代码之前。您可以尝试将JQuery放在<head>中,并将正在运行的脚本放在body标记<body>的末尾。
发布于 2016-08-17 18:11:26
您可以添加一个要在加载jQuery时执行的函数。
<script src="jquery.js&callback=start"</script>
其中&callback=start执行实际javascript文件中的start()函数,您可以用它来包装您的代码。
function start() {
/* your code */
}第一次找不到jQuery的原因是,当jQuery完全加载时,浏览器会对其进行缓存。它必须在您第一次实际访问或强制重新加载页面时加载整个文件。
发布于 2016-08-17 18:11:51
当您在script标记上使用async时,脚本可以在页面加载过程中的任何时刻以任何顺序执行,这就是为什么您的脚本有时只能工作的原因。您需要知道执行顺序,以换取稍微快一点的页面加载速度。这通常要求您加载的脚本不相互依赖,也不需要精心设计的加载方案-通常使用一个回调函数,该函数在没有异步的情况下运行,并在依赖项报告它们可用时调用您的代码。
您应该考虑async是否真的是适合您的设置的选项。
https://stackoverflow.com/questions/38993479
复制相似问题