GWT BOOTSTRAP - 问题

时间:2010-07-13 19:34:57

标签: javascript gwt

在Googles页面上阅读GWT Bootstrap,我有一些问题。 (http://code.google.com/p/google-web-toolkit-doc-1-5/wiki/FAQ_WhenDoModulesLoad

假设: 大多数浏览器最多允许两个同时连接来获取资源。

HTML页面:

<html> <body onload='alert("w00t!")'> <img src='bigImageZero.jpg'></img> <script source='externalScriptZero.js'></script> <img src='bigImageOne.jpg'></img> <img src='reallyBigImageTwo.jpg'></img> <script src='com.example.app.App.nocache.js'></script> <script src='externalScriptOne.js'></script> </body> </html>

因此,引导程序由以下内容组成:

  1. 获取HTML文档并开始解析。
  2. 开始获取bigImageZero.jpg。
  3. 开始提取externalScriptZero.js。
  4. bigImageZero.jpg完成(让我们假设)。解析将被阻止,直到externalScriptZero.js完成提取和评估。
  5. externalScriptZero.js完成。
  6. 同时开始获取bigImageOne.jpg和reallyBigImageTwo.jpg。
  7. bigImageOne.jpg完成(我们再假设)。 com.example.app.App.nocache.js开始提取和评估。
  8. ... nocache.js完成,编译后的脚本(... cache.js)开始抓取(这是非阻塞的)。
  9. ... cache.js完成。 onModuleLoad()尚未被调用,因为在文档被认为是“准备好”之前,我们仍在等待externalScriptOne.js完成。
  10. externalScriptOne.js完成。该文档已准备就绪,因此onModuleLoad()会触发。
  11. reallyBigImageTwo.jpg完成。
  12. body_onload()会触发,在这种情况下会显示一个alert()框。

    问题:

    JAVASCRIPT如何知道文档已准备好开始onModuleLoad函数(步骤10)?

2 个答案:

答案 0 :(得分:2)

从同一页面:

  • <img>代码无法保证在调用onModuleLoad()时加载。
  • <script>代码 保证在调用onModuleLoad()时完成加载。

因此,当执行onModuleLoad()时,会加载externalScriptOne.js,但在加载所有脚本标记之前它不会启动。

答案 1 :(得分:0)

nocache.js或cache.js可以在最后一个<script>标记后立即添加额外的<script>标记。在获取,解析和评估所有先前的<script>标记之前,不会获取此额外<script>标记。然后,无需等待任何图像即可获取,执行和评估此<script>标记。对此<script>标记的评估可以调用onModuleLoad(),它不会等待任何图像,因此它会比body.onload更早发生

这只是我的理论;我无法在我的开发服务器中验证它,我也没有尝试在appengine上验证它。