谷歌的托管dojox.gfx

时间:2008-09-18 04:39:30

标签: dojo

我正在使用以下html从Google托管中加载dojo。

<script src="http://www.google.com/jsapi"></script>
<script type="text/javascript">google.load("dojo", "1.1.1");</script>
<script type="text/javascript">
dojo.require("dojox.gfx");
...

这个在requre行上的错误输出与dojox.gfx之类的错误是未定义的。有没有办法使这项工作,或谷歌不支持dojox扩展?

或者,我可以使用另一个常用主机来进行标准的dojo发布吗?

4 个答案:

答案 0 :(得分:4)

与直接从&lt; script&gt;引用.js文件时不同标签(请注意,谷歌js api也支持此功能,请参阅here),google.load不是同步的。这意味着当您的代码到达google.load时,它不会等待dojo完全加载以保持解析;它将直接进入你的dojo.require行,它将在那里失败,因为 dojo 对象将是未定义的。

解决方案(如果您不想使用直接&lt; script&gt;标记),是将所有引用dojo的代码包含在 start 函数中,并将其设置为通过执行回调:

google.load("dojo", "1.1.1", {callback: start});

function start() {
    dojo.require("dojox.gfx");
    ...
}

google.setOnLoadCallback(start);
google.load("dojo", "1.1.1");

function start() {
    dojo.require("dojox.gfx");
    ...
}

答案 1 :(得分:0)

我相信google会成为导入库的命名空间。尝试:google.dojo.require

哦!如下所述,请不要忘记使用google.setOnLoadCallback而不是直接调用您的函数。

答案 2 :(得分:0)

更好的问题是 - 你为什么要这样做?如果您在本地主机上进行开发,那么只需使用相对路径,如果您正在面向互联网的服务器上进行开发 - 将dojo文件粘贴在其上。

另外 - 确保你没有违反same origin policy

答案 3 :(得分:0)

dojox实际上没有维护,将从dojo-2中取出。 dojox中的大多数小部件都存在主要问题,只有少数好处。

恕我直言,dojo应该是自托管的,因为总会有你需要覆盖的东西 - 例如,你需要在dojox.gfx中修改一些东西。