【问题标题】:GWT BOOTSTRAP - QuestionGWT BOOTSTRAP - 问题
【发布时间】:2011-03-15 12:32:05
【问题描述】:

阅读 Google 页面上的 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)?

【问题讨论】:

  • 你的问题在语法上很不清楚。你到底想知道什么?
  • onModuleLoad 函数 (javascript) 如何能够等到文档“就绪”

标签: javascript gwt


【解决方案1】:

来自同一页面:

  • 调用onModuleLoad() 时,不能保证&lt;img&gt; 标记已完成加载。
  • &lt;script&gt; 标签被保证在调用onModuleLoad() 时完成加载。

所以当 onModuleLoad() 被执行时 externalScriptOne.js 被加载,它不会在所有脚本标签被加载之前启动。

【讨论】:

  • 因此, OnModuleLoad 没有被触发,因为解析器正在获取 externalScriptOne.js 。正确的 ?提前致谢
  • 是的,这是正确的。在加载 externalStricptOne.js 之前它不会被触发。我不确定这是否是脚本标签的一个功能,或者 GWT 是否在 body.onload 中注册。但如前所述,当调用 onModuleLoad 时,可以保证所有脚本都已加载。
  • 也许 GWT 在 Body.OnLoad 事件上注册了任何东西。你是对的,我在 GWT 编译脚本中寻找这个。但是从谷歌的页面“ 标签不能保证在调用 onModuleLoad() 时完成加载。”打破关于 body.onLoad 事件的理论。
【解决方案2】:

nocache.js 或 cache.js 都可以在最后一个 &lt;script&gt; 标记之后立即添加一个额外的 &lt;script&gt; 标记。在获取、解析和评估所有先前的 &lt;script&gt; 标记之前,不会获取此额外的 &lt;script&gt; 标记。然后这个&lt;script&gt; 标签将被获取、执行和评估,而无需等待任何图像。这个&lt;script&gt;标签的评估可以调用onModuleLoad(),它不会等待任何图像,所以它会比body.onload更快发生

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 2010-11-02
    • 2011-05-30
    • 2011-11-28
    相关资源
    最近更新 更多