一个完整的djConfig对象定义如下(值均为dojo的默认值)
js代码
vardjConfig={
isDebug:false,
debugContainerId:"",
bindEncoding:"",
allowQueryConfig:false,
baseScriptUri:"",
parseWidgets:true
searchIds:[],
baseRelativePath:"",
libraryScriptUri:"",
iePreventClobber:false,
ieClobberMinimal:true,
preventBackButtonFix:true,
debugContainerId同样也是与调试有关的,如果不指定的话,调试信息将会直接利用document.write输出,这样可能会破坏页面的整体布局,所以你可以指定任何一个可以作为容器的html元素的id作为调试信息输出容器
allowQueryConfig,这个属性指明dojo是否允许从页面url的参数中读取djConfig中的相关属性,当值为true时,dojo会优先从url参数中读取djConfig的其他属性,比如:http://server/dojoDemo.htm?djConfig.debugContainerId=divDebug
baseScriptUri,一般不需要设置,dojo会自动根据你引用dojo.js的路径设置这个值,比如,
ps:如果你有多个工程需要同时引用dojo.js的话,建议也把dojo当作一个独立的工程,引用的时候采用绝对路径就可以了
parseWidgets,这个是可以控制dojo是否自动解析具有dojoType的html元素为对应的widget,如果你没有使用任何Widget,建议设置为false以加快dojo的加载速度
searchIds,这是一个字符串数组,定义了所有需要解析为widget的html元素的ID,如果ID不在其中的html元素是不会被解析的,当数组为空数组时,则所有具有dojoType的元素都会被解析
还有一个bindEncoding,是用来设置默认的bind请求的编码方式。
dojo.raise抛出一个异常
dojo.errorToString将异常转换为字符串
js代码
try{
dojo.raise("打印失败",newError("文件不存在"));
}catch(e)
{
alert(dojo.errorToString(e));
}
isDebug是一个很有用的属性,如果设置为真,则所有dojo.Debug的输出有效,开发时应该设置为true,发布时应该设置为false。
1计算HTML中一个块的size
js代码
dojo.style.getOuterWidth/dojo.style.getOuterHeight
dojo.style.getInnerWidth/dojo.style.getInnerHeight
2修改CSS
js代码
dojo.html.addClass(node,className)
dojo.html.prependClass(node,className)
dojo.html.removeClass(node,className)
dojo.html.replaceClass(node,className,oldClassName)
3动画
js代码
fadeIn,fadeShow,fadeOut,fadeHide,
wipeIn,wipeOut
explode,implode
highlight,unhighlight
举例:
functionwipeOut(elId){
dojo.lfx.wipeOut(elId,300).play();
}
functionwipeIn(elId){
dojo.lfx.wipeIn(elId,300).play();
}
functionfadeOut(elId){
dojo.lfx.html.fadeOut(elId,300).play();
}
functionfadeIn(elId){
dojo.lfx.html.fadeIn(elId,300).play();
}
functionopacity(elId){
dojo.html.setOpacity(elId,0.5);
}
functionopacityApp(){
$("#opacity").click(function(){
opacity('fadeElm');
});
}
functionfadeInApp(){
$("#fadein").click(function(){
fadeIn('fadeElm');
});
}dojo.lang模块:
dojo.lang.mixin将一个对象的方法和属性增加到另一个对象上:
js代码
vars1={name:"TestObj",test1:function(){alert("thisistest1!");}}
vars2={value:1000,test2:function(){alert("thisistest2!");}}
vard={};
dojo.lang.mixin(d,s1,s2);//执行后d就具备了s1和s2的所有属性和方法d.test1();
dojo.lang.extend为指定类的原型扩展方法与属性:
js代码
TestClass=function(){};
dojo.lang.extend(TestClass,{name:"demo",test:function(){alert("Test!");}});
varo=newTestClass();
//TestClass本来是没有test方法的,但是extend以后就有test方法了o.test();
dojo.lang.find=dojo.lang.indexOf查找指定对象在指定数组中的位置:
js代码
vararr=[1,2,3,3,2,1];
dojo.lang.find(arr,2);//willreturn1
dojo.lang.extrasdojo.lang.setTimeout延迟指定时间后执行指定方法:
js代码
functiononTime(msg){dojo.debug(msg)}
dojo.lang.setTimeout(onTime,1000,"test");//1秒后会输出调试信息"test"
DOM操作
js代码
dojo.dom.isNode
dojo.dom.getTagName
dojo.dom.firstElement
dojo.dom.lastElement
dojo.dom.nextElement
dojo.dom.prevElement
dojo.dom.moveChildren(srcNode,destNode,trim)
dojo.dom.copyChildren(srcNode,destNode,trim)
dojo.dom.removeChildren(node)
dojo.dom.replaceChildren(node,newChild)
dojo.dom.removeNode(node)
dojo.dom.getAncestors
dojo.dom.getAncestorsByTag
dojo.dom.innerXML
dojo.dom.createDocumentFromText
dojo.dom.prependChild
dojo.dom.insertAfter
dojo.dom.insertAtPosition
dojo.dom.textContent
先介绍这么多,祝大家周末愉快!