我使用下面的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");
...此错误在请求行上显示错误,如dojox.gfx is undefined。有没有办法做到这一点,或者谷歌不支持dojox扩展?
或者,有没有其他通用主机可以用于标准dojo版本?
发布于 2008-09-18 05:03:44
与直接从标记引用.js文件不同(请注意,google js api也支持这一点,请参阅here),google.load不是同步的。这意味着当您的代码到达google.load时,它不会等待dojo完全加载以保持解析;它将直接转到您的dojo.require行,并且它将在那里失败,因为dojo对象将是未定义的。
解决方案(如果您不想使用direct标记)是将引用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");
...
}发布于 2008-09-18 04:42:03
我相信google会成为你导入的库的命名空间。试试:google.dojo.require。
噢!正如下面指出的,不要忘记使用google.setOnLoadCallback而不是直接调用你的函数。
发布于 2008-09-18 04:43:47
一个更好的问题是--你为什么要这样做?如果你是在你的本地主机上进行开发,那么只需要使用相对路径,如果你是在面向互联网的服务器上进行开发,那么就把dojo文件放在上面。
还有-确保你不会与same origin policy发生冲突
https://stackoverflow.com/questions/90067
复制相似问题