2016-08-17 74 views
0

我试图在头部分加载JavaScript异步。在开发者控制台中加载页面后,我有错误,“jQuery没有定义”。一两次刷新后脚本加载并完美工作。如果脚本标签内没有“异步”,也可以使用。为什么会发生这种情况,并有任何解决方法。在此先感谢在头部分的异步JavaScript只能在刷新页面后工作

+2

那么,如果你的脚本使用jQuery,它必须在你的脚本之前被加载......只要将脚本放在''标签的末尾并且正常加载就比较安全。 – Dellirium

回答

0

正如Dellirium所说,JQuery需要放在需要它的javascript代码之前。您可以尝试将JQuery放在<head>中,并在正文标记<body>的末尾放置您正在运行的脚本。

+0

这使得竞争条件不那么严重,但不会将其移除。它仍然可能失败。 – Gant

0

你可以添加一个函数来加载jQuery时执行。

<script src="jquery.js&callback=start"</script>

在这&回调=启动执行实际的JavaScript文件的start()函数,你可以用它来绕到你的代码。

function start() { 

    /* your code */ 

} 

原因的jQuery无法找到的第一个时代是因为你的浏览器缓存的jQuery时,它是满载。它必须在您第一次实际访问或强制重新加载页面时加载整个文件。

0

当您在script标记上使用async时,该脚本可以在页面加载期间的任何时间以任意顺序执行,这就是您的脚本有时只能工作的原因。你知道执行的顺序,稍微加快页面加载的时间。这通常要求您加载的脚本不依赖于彼此或精细的加载方案 - 通常使用一个不带异步运行的回调函数,并在依赖关系报告它们可用时调用代码。

您应该考虑如果async真的是您的设置的正确选项。

相关问题