推荐dojo学习笔记


Posted in Javascript onMarch 24, 2007

在引用dojo.js前,最好声明djConfig对象,以便在加载dojo.js时能够取得所设置的值,虽然在0.3版本以后dojo支持在加载后设置,但是强烈建议你把声明djConfig的代码作为第一段script:
一个完整的djConfig对象定义如下(值均为dojo的默认值)
js 代码
var djConfig = {    
   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的路径设置这个值,比如,<script src="../dojo/dojo.js" type="text/javascript"></script>,自动获取的值便是 ../dojo/
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("打印失败", new Error("文件不存在"));    
} 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     
举例:     
    function wipeOut(elId){    
        dojo.lfx.wipeOut(elId, 300).play();    
    }    
    function wipeIn(elId) {    
        dojo.lfx.wipeIn(elId, 300).play();    
    }    
    function fadeOut(elId){    
       dojo.lfx.html.fadeOut(elId, 300).play();    
    }    
    function fadeIn(elId){    
       dojo.lfx.html.fadeIn(elId, 300).play();    
    }    
    function opacity(elId){    
       dojo.html.setOpacity(elId, 0.5);    
    }    
    function opacityApp(){    
       $("#opacity").click(function(){    
          opacity('fadeElm');    
       });    
    }    
    function fadeInApp(){    
       $("#fadein").click(function(){    
            fadeIn('fadeElm');    
        });    
    }   dojo.lang模块:
dojo.lang.mixin将一个对象的方法和属性增加到另一个对象上:
js 代码
var s1 = {name: "TestObj", test1: function(){alert("this is test1!");}}    
var s2 = {value: 1000, test2: function(){alert("this is test2!");}}    
var d = {};    
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!");}});    
var o = new TestClass();      
                   //TestClass本来是没有test方法的,但是extend以后就有test方法了o.test();   
dojo.lang.find=dojo.lang.indexOf查找指定对象在指定数组中的位置:
js 代码
var arr = [1,2,3,3,2,1];    
dojo.lang.find(arr, 2);   //will return 1   
dojo.lang.extrasdojo.lang.setTimeout延迟指定时间后执行指定方法:
js 代码
function onTime(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    
先介绍这么多,祝大家周末愉快!

Javascript 相关文章推荐
javascript优先加载笔记代码
Sep 30 Javascript
javascript分页代码实例分享(js分页)
Dec 13 Javascript
一个CSS+jQuery实现的放大缩小动画效果
Feb 19 Javascript
javascript基本类型详解
Nov 28 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
Jun 05 Javascript
使用requestAnimationFrame实现js动画性能好
Aug 06 Javascript
JS实现购物车特效
Feb 02 Javascript
node.js+jQuery实现用户登录注册AJAX交互
Apr 28 jQuery
jQuery简单实现向列表动态添加新元素的方法示例
Dec 25 jQuery
详解关于Angular4 ng-zorro使用过程中遇到的问题
Dec 05 Javascript
重学JS 系列:聊聊继承(推荐)
Apr 11 Javascript
js+canvas实现刮刮奖功能
Sep 13 Javascript
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
Mar 24 #Javascript
tbody元素支持嵌套的注意方法
Mar 24 #Javascript
xml 与javascript结合的问题解决方法
Mar 24 #Javascript
用prototype实现的简单小巧的多级联动菜单
Mar 24 #Javascript
this[] 指的是什么内容 讨论
Mar 24 #Javascript
javascript对象的property和prototype是这样一种关系
Mar 24 #Javascript
Ajax一统天下之Dojo整合篇
Mar 24 #Javascript
You might like
一个可以找出源代码中所有中文的工具
2006/10/25 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
php的api数据接口书写实例(推荐)
2016/09/22 PHP
PHP设计模式之工厂模式实例总结
2017/09/01 PHP
php求斐波那契数的两种实现方式【递归与递推】
2019/09/09 PHP
Laravel获取所有的数据库表及结构的方法
2019/10/10 PHP
php 函数中静态变量使用的问题实例分析
2020/03/05 PHP
javascript 写类方式之九
2009/07/05 Javascript
麻雀虽小五脏俱全 Dojo自定义控件应用
2010/09/04 Javascript
javascript 事件绑定问题
2011/01/01 Javascript
Js nodeType 属性全面解析
2013/11/14 Javascript
js出生日期 年月日级联菜单示例代码
2014/01/10 Javascript
javascript浏览器兼容教程之事件处理
2014/06/09 Javascript
javascript数据结构与算法之检索算法
2015/04/04 Javascript
js实现键盘Enter键提交表单的方法
2015/05/27 Javascript
牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作
2015/10/29 Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
2016/06/09 Javascript
JS中微信小程序自定义底部弹出框
2016/12/22 Javascript
Vue 子组件与数据传递问题及注意事项
2019/07/11 Javascript
谈谈IntersectionObserver懒加载的具体使用
2019/10/15 Javascript
记一次用ts+vuecli4重构项目的实现
2020/05/21 Javascript
解决vue+elementui项目打包后样式变化问题
2020/08/03 Javascript
python访问抓取网页常用命令总结
2017/04/11 Python
Python爬虫进阶之爬取某视频并下载的实现
2020/12/08 Python
python 利用jieba.analyse进行 关键词提取
2020/12/17 Python
python re模块常见用法例举
2021/03/01 Python
暇步士官网:Hush Puppies
2016/09/22 全球购物
美国首屈一指的礼品篮供应商:GiftTree
2018/01/06 全球购物
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
英国家庭和商业健身器材购物网站:Fitness Options
2018/07/05 全球购物
英国高级健康和美容产品零售商:Life and Looks
2019/08/01 全球购物
毕业生个人投资创业计划书
2014/01/04 职场文书
销售合作意向书范本
2015/05/08 职场文书
2015年体育教师个人工作总结
2015/05/12 职场文书
2015元旦感言
2015/12/09 职场文书
mysql如何查询连续记录
2022/05/11 MySQL