Dom Dojo加载,但是Dojo加载了吗?

Dom Dojo加载,但是Dojo加载了吗?,dom,dojo,onload,Dom,Dojo,Onload,我遇到了一个看起来像鸡和蛋的问题,我认为这是一个合乎逻辑的解决方案。然而,我突然想到,其他人肯定也遇到过类似的事情,所以我想我应该把它漂浮在那里,让大众知道 情况是,我想使用dojo的addOnLoad函数将大量回调排队,这些回调应该在DOM在客户端完成渲染后执行。因此,我所做的如下: <html> <head> <script type="text/javascript" src="dojo.xd.js"></script>

我遇到了一个看起来像鸡和蛋的问题,我认为这是一个合乎逻辑的解决方案。然而,我突然想到,其他人肯定也遇到过类似的事情,所以我想我应该把它漂浮在那里,让大众知道

情况是,我想使用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.addOnLoad(…);
dojo.addOnLoad(…);
...
现在的问题是,我似乎在将整个dojo库下载到浏览器之前调用dojo.addOnLoad。这在某种程度上是有意义的,因为内联脚本内容应该在加载整个DOM之前执行(并且触发正常的body onload回调)

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

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

想法

致以最良好的祝愿,
亚当·赖斯

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

  • 它发射得更早,因为它利用了
  • 它处理dojo.require的异步加载,方法是延迟执行,直到读取了所有必需的脚本
在DojoCampus中解释为():

addOnLoad是一个基本方面 使用Dojo的方法。正在传递加载a 函数将函数注册到 在Dom就绪时运行。这 与document.ready略有不同 还有body.onload在addOnLoad中 等待所有dojo.require()(和 它们的递归依赖关系)具有 射击前装弹


这可能与你的问题无关,但我刚刚有一个病例,我也有同样的症状。对我来说,Firefox、Chrome等的一切都很好,但IE8却不行

我得到了看起来像dojo没有被加载的结果,IE8中的一个错误说dojo是未定义的(但不是一直如此),我可以将所有内容剥离为样式表并导入dojo,但仍然会得到错误

我在运行一个本地的谷歌应用引擎开发服务器。这看起来是基于pythons SimpleHTTPServer的,它反过来使用SocketServer.BaseServer。这有BaseServer.request\u queue\u size,默认值为5-我在app engine中找不到任何超过此值的内容,因此我猜google app engine服务器的开发上限为5个连接

使用regedit并转到HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet设置

“MaxConnectionsPerServer”=dword:00000010 “MaxConnectionsPer1\u 0Server”=dword:0000010

这表明IE将尝试同时打开多达10个连接。我编辑了这两个键,把它们改成2,然后重新启动计算机,问题就解决了