我成功地使用dojo.dnd.Source和从我的网络服务器加载的Dojo 1.4.3。但是,由于它是共享主机或由于某些其他原因,加载速度非常慢。 (偶尔也会持续1分30秒)
所以我现在尝试切换到DOJO 1.5和googleapis作为来源。结果加载时间要好得多,但我现在的问题是dojo.dnd无法识别。这是我用来加载dojo.dnd.Source
的代码
dojo.addOnLoad(function() {
dojo.require("dijit.Dialog");
dojo.require("dojo.parser");
dojo.require("dijit.Editor");
dojo.require("dojo.dnd.Source");
widgetSrcNode = new dojo.dnd.Source("admin_widgetSrcNode", {accept:["unknown"]});
我收到的错误消息如下: dojo.dnd未定义 http://mydomain.com/admin/somepage.php?wp=17 第171行
- 消息结束
第171行:widgetSrcNode = new dojo.dnd.Source(“admin_widgetSrcNode”,{accept:[“unknown”]});
我在1.5 vs 1.4中看不到dojo.dnd文档的任何变化,我尝试了几个djconfig选项,但没有运气。我还能尝试什么?
答案 0 :(得分:0)
只要您在页面中包含dojo.js
,您就可以立即获得所有Dojo Base。它适用于Dojo的任何版本。
但是当您使用Dojo的CDN版本(在您的情况下为Google CDN)时,所有dojo.require()
调用都将变为异步。发布dojo.require()
并不意味着下一行将提供所需的内容。你应该等待它。
幸运的是,这部分很容易。尝试修改你的代码:
// require our stuff outside of dojo.ready()
dojo.require("dijit.Dialog");
dojo.require("dojo.parser");
dojo.require("dijit.Editor");
dojo.require("dojo.dnd.Source");
dojo.ready(function() {
// DOM is loaded and required files are downloaded
// let's create what we want
widgetSrcNode = new dojo.dnd.Source(...);
});
或者您可以随时进行嵌入式等待:
dojo.ready(function(){
// DOM is ready
// require more stuff
dojo.require("dijit.Dialog");
dojo.require("dojo.parser");
dojo.require("dijit.Editor");
dojo.require("dojo.dnd.Source");
// now wait for it
dojo.ready(function() {
// let's create what we want
widgetSrcNode = new dojo.dnd.Source(...);
});
});
我个人更喜欢前者 - 只是更简单。
顺便说一下,我使用dojo.ready()
代替dojo.addOnLoad()
纯粹是出于个人喜好。它们是同义词,可以互换使用。