Google托管的dojox.gfx
时间:2020-03-06 14:19:59 来源:igfitidea点击:
我正在使用以下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的错误。有没有办法使这项工作有效,或者Google不支持dojox扩展?
另外,是否可以在标准dojo版本中使用其他通用主机?
解决方案
我相信google成为我们导入的库的名称空间。试试:google.dojo.require
。
哦!而且,如下面所指出的,不要忘记使用google.setOnLoadCallback而不是直接调用函数。
一个更好的问题是我们为什么要这么做?如果我们在本地主机上进行开发,则仅使用相对路径,如果在面向Internet的服务器上进行开发,则将dojo文件粘贴在该主机上。
还要确保我们不会违反相同的原产地政策
与我们直接从<script>标记引用.js文件(请注意,google js api也支持此功能,请参见此处)不同,google.load不是同步的。这意味着当代码到达google.load时,它不会等待dojo完全加载以继续解析;它会直接转到dojo.require行,并在那里失败,因为dojo对象是未定义的。
解决方案(如果我们不想使用直接的<script>标记),是通过执行以下操作将所有引用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"); ... }