【发布时间】:2010-05-10 14:18:40
【问题描述】:
On my web site,我正在尝试以尽可能快的速度加载页面。
我注意到我的 JavaScript 似乎没有异步加载。图片链接如下。
alt text http://img249.imageshack.us/img249/2452/jsasynch2.png
我的网站的工作原理是它需要加载两个外部 JavaScript 文件:
- Google 地图 v3 JavaScript,以及
- JQuery JavaScript
然后,我在 HTML 中有内联 JavaScript,在下载上述两个文件之前无法执行。
一旦加载了这些外部 javascript 文件,它就可以动态地呈现页面。我的页面在加载 Google Maps 和 JQuery 之前无法加载的原因是 - 我的页面基于用户的地理位置(使用 Gmaps)然后将根据他们所在的位置(例如纽约,旧金山等)。这意味着,不同城市的两个人查看我的网站会看到不同的首页。
问题:如何让我的 JavaScript 文件异步下载,以便我的整体页面加载时间最快?
更新:
如果我要以某种方式异步下载 Google-maps 和 JQuery,我将如何创建一个事件,一旦 Google-maps 和 JQuery 都已下载,因为我的页面很难依赖这些文件来执行。
更新 2
尽管下面有 3 个答案,但仍然没有一个能真正回答我遇到的问题。任何帮助将不胜感激。
【问题讨论】:
-
您应该将所有内联 javascript 移出到不引人注目的 javascript 中,这样可以解决您的一些问题。
-
关于您的更新,只需创建一个在您的 每个 脚本加载时调用的函数,并让它在 second 调用它的时间。 IE。第一次调用时,设置一个变量,第二次(当它注意到变量已设置时),运行你的代码。
-
@tloflin,您刚才描述的是创建“瀑布效果”,这不是异步。
-
@Teddyk,如果您希望代码等到满足某个条件(例如加载两个脚本),根据定义,这不是“异步”。你希望它以什么方式异步?您应该能够使其与脚本本身一样异步。
-
@Tloflin,我希望他们同时开始下载。这就是我所说的异步
标签: javascript google-maps asynchronous