gpt4 book ai didi

dom - Dojo addOnLoad,但是否加载了 Dojo?

转载 作者:行者123 更新时间:2023-12-04 02:18:09 25 4
gpt4 key购买 nike

我遇到了似乎是先有鸡还是先有蛋的问题,并且我认为这是一个合乎逻辑的解决方案。然而,我突然想到其他人一定也遇到过类似的事情,所以我想我会把它漂浮在那里给大众看。

情况是我想使用 dojo 的 addOnLoad 函数来排队一些回调,这些回调应该在 DOM 在客户端完成渲染后执行。所以我正在做的事情如下:

<html>
<head>
<script type="text/javascript" src="dojo.xd.js"></script>
...
</head>
<body>
...
<script type="text/javascript">
dojo.addOnLoad( ... );
dojo.addOnLoad( ... );
...
</script>
</body>
</html>

现在,问题是我似乎在将整个 Dojo 库下载到浏览器之前调用了 dojo.addOnLoad。这在某种程度上是有道理的,因为内联 SCRIPT 内容应该在加载整个 DOM 之前执行(并且触发正常的主体 onload 回调)。

我的问题是 - 我的方法是否合理,或者注册一个普通/标准主体 onload JavaScript 回调来调用一个函数是否更有意义,该函数与每个 dojo.addOnLoads 在 SCRIPT 块中所做的工作相同。当然,这引出了一个问题,如果您不能保证在使用 Dojo 库之前会加载 Dojo 库,为什么还要使用 dojo.addOnLoad 呢?

希望这种情况对我以外的其他人有意义。似乎其他人可能遇到过这种情况。

想法?

此致,
亚当赖斯

最佳答案

你做对了。外部 Javascript 文件按顺序同步加载和执行,因此当它到达您的 dojo.addOnLoad( ... ); 时Dojo 已加载。使用 dojo.addOnLoad而不是 window.onload有两个原因:

  • 它更早触发,因为它利用 DOMContentLoaded
  • 它处理 dojo.require 的异步加载通过推迟执行,直到所有必需的脚本都已读取

  • 在 DojoCampus 中解释为 ( dojo.addOnLoad):

    dojo.addOnLoad is a fundamental aspect of using Dojo. Passing addOnLoad a function will register the function to run when the Dom is ready. This differs slightly from document.ready and body.onload in that addOnLoad waits until all dojo.require() (and their recursive dependencies) have loaded before firing.

    关于dom - Dojo addOnLoad,但是否加载了 Dojo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/467166/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com