Dojo FAQ
翻译至dojo的FAQ只是节选了一些比较容易碰到的问题,还有一些自己遇到的问题,希望对大家有帮助:
1.为啥IE会说有个语法错误?
很有可能你是在列表后面多了个逗号如下所示:
var request = dojo.io.bind({
url: this.actionURL,
method: ‘get’,
content: {
id: this.rowId,
field: this.dbField,
value: this.checkbox.checked
}, <—- 这就是你多的逗号
});
或Or:
var foo = [ 1 , 2, 3, ];
或:
var obj = {
apple: "delicious",
brussel sprouts: "yucky",
};
这个问题很普遍,而且在Firefox下是可以解析的,而在IE下会使整段script代码失效,这样调试起来也很麻烦,着实让人郁闷.
2.为啥页面载入的这么慢?
一些用dojo.require()载入的资源是通过同步XHR来从服务器来读取的?这在开发的时候很方便,但在部署的时候就会出现网页载入很慢的问题.实际上可以用打包的方法来将一些经
常用的js打包到一个dojo.js中,然后在对这个dojo.js压缩一下,这样就会快很多(关于打包和压缩将会在以后具体说明).
3.dojo.addOnLoad 没有在页面载入后执行
为了使dojo.addOnLoad正确的执行,你需要将代码写在一个init函数中,然后再用dojo.addOnLoad执行,例下:
这个是不对的:dojo.addOnLoad(alert("this page is not yet loaded");
你应该这么写:
function init() {
alert("this page is fully loaded!");
}
dojo.addOnLoad(init);
alert方法应该写在init中,再用dojo.addOnLoad载入,才能被正确的执行.
dojo.addOnLoad在firefox中执行也有问题,有时在Document未解析完前就执行了,这样有些DomNode会取不到而出现问题,而在IE却是正常的…..看来这个问题也有待解决!
所以最好还是在一些DomNode的onload事情中执行函数才能在firefox和IE中都正常运行.