• Dojo实用API


    模块:dojo.dom

    dojo.dom.isNode

    测试指定对象是否为节点

    Usage Example:

    dojo.dom.isNode(dojo.byId('edtTitle'));


    dojo.dom.getUniqueId

    取得唯一id

    Usage Example:

    dojo.dom.getUniqueId();  //will return dj_unique_#


    dojo.dom.firstElement = dojo.dom.getFirstChildElement

    取得指定节点下的第一个满足指定Tag条件的子节点

    Usage Example:

    dojo.dom.firstElement(parentNode, 'SPAN');


    dojo.dom.lastElement = dojo.dom.getLastChildElement

    取得指定节点下的最后一个满足指定Tag条件的子节点

    Usage Example:

    dojo.dom.lastElement(parentNode, 'SPAN');


    dojo.dom.nextElement = dojo.dom.getNextSiblingElement

    取得指定节点的下一个满足指定Tag条件的子节点

    Usage Example:

    dojo.dom.nextElement(node, 'SPAN');


    dojo.dom.prevElement = dojo.dom.getPreviousSiblingElement

    取得指定节点的前一个满足指定Tag条件的子节点

    Usage Example:

    dojo.dom.prevElement(node, 'SPAN');


    dojo.dom.moveChildren

    把指定节点下的所有子节点移动到目标节点下,并返回移动的节点数

    Usage Example:

    dojo.dom.moveChildren(srcNode, destNode, true); //仅移动子节点,srcNode中的文字将被丢弃
    dojo.dom.moveChildren(srcNode, destNode, false);//包括文字和子节点都将被移动到目标节点下


    dojo.dom.copyChildren

    把指定节点下的所有子节点复制到目标节点下,并返回复制的节点数

    Usage Example:

    dojo.dom.moveChildren(srcNode, destNode, true); //仅复制子节点,srcNode中的文字将被忽略
    dojo.dom.moveChildren(srcNode, destNode, false);//包括文字和子节点都将被复制到目标节点下


    dojo.dom.removeChildren

    删除指定节点下的所有子节点,并返回删除的节点数

    Usage Example:

    dojo.dom.moveChildren(node);


    dojo.dom.replaceChildren

    用指定的新节点替换父节点下的所有子节点

    Usage Example:

    dojo.dom.replaceChildren(node, newChild); //目前还不支持newChild为数组形式


    dojo.dom.removeNode

    删除指定的节点

    Usage Example:

    dojo.dom.removeNode(node);


    dojo.dom.getAncestors

    返回指定节点的父节点集合

    Usage Example:

    dojo.dom.getAncestors(node, null, false); //返回所有的父节点集合(包括指定的节点node)
    dojo.dom.getAncestors(node, null, true); //返回最近的一个父节点
    dojo.dom.getAncestors(node, function(el){/* 此处增加过滤条件 */return true}, false); //返回所有满足条件的父节点集合


    dojo.dom.getAncestorsByTag

    返回所有符合指定Tag的指定节点的父节点集合

    Usage Example:

    dojo.dom.getAncestorsByTag(node, 'span', false); //返回所有的类型为SPAN的父节点集合
    dojo.dom.getAncestorsByTag(node, 'span', true);  //返回最近的一个类型为SPAN的父节点


    dojo.dom.getFirstAncestorByTag

    返回最近的一个符合指定Tag的指定节点的父节点

    Usage Example:

    dojo.dom.getFirstAncestorByTag(node, 'span'); //返回最近的一个类型为SPAN的父节点


    dojo.dom.isDescendantOf

    判断指定的节点是否为另一个节点的子孙

    Usage Example:

    dojo.dom.isDescendantOf(node, ancestor, true); //判断node是否为ancestor的子孙
    dojo.dom.isDescendantOf(node, node, false); //will return true
    dojo.dom.isDescendantOf(node, node, true); //will return false


    dojo.dom.innerXML

    返回指定节点的XML

    Usage Example:

    dojo.dom.innerXML(node);


    dojo.dom.createDocument

    创建一个空的文档对象

    Usage Example:

    dojo.dom.createDocument();


    dojo.dom.createDocumentFromText

    根据文字创建一个文档对象

    Usage Example:

    dojo.dom.createDocumentFromText('<?xml version="1.0" encoding="gb2312" ?><a>1</a>','text/xml');

    doc.load

    根据文件装在XML

    Usage Example:

    var doc = dojo.dom.createDocument();


    doc.load('http://server/dojo.xml');

     
    dojo.dom.prependChild

    将指定的节点插入到父节点的最前面

    Usage Example:

    dojo.dom.prependChild(node, parent);


    dojo.dom.insertBefore

    将指定的节点插入到参考节点的前面

    Usage Example:

    dojo.dom.insertBefore(node, ref, false); //如果满足要求的话就直接退出
    dojo.dom.insertBefore(node, ref, true);


    dojo.dom.insertAfter

    将指定的节点插入到参考节点的后面

    Usage Example:

    dojo.dom.insertAfter(node, ref, false); //如果满足要求的话就直接退出
    dojo.dom.insertAfter(node, ref, true);


    dojo.dom.insertAtPosition

    将指定的节点插入到参考节点的指定位置

    Usage Example:

    dojo.dom.insertAtPosition(node, ref, "before");//参考节点之前
    dojo.dom.insertAtPosition(node, ref, "after"); //参考节点之后
    dojo.dom.insertAtPosition(node, ref, "first"); //参考节点的第一个子节点
    dojo.dom.insertAtPosition(node, ref, "last");  //参考节点的最后一个子节点
    dojo.dom.insertAtPosition(node, ref); //默认位置为"last"


    dojo.dom.insertAtIndex

    将指定的节点插入到参考节点的子节点中的指定索引的位置

    Usage Example:

    dojo.dom.insertAtIndex(node, containingNode, 3);  //把node插入到containingNode的子节点中,使其成为第3个子节点


    dojo.dom.textContent

    设置或获取指定节点的文本

    Usage Example:

    dojo.dom.textContent(node, 'text'); //设置node的文本为'text'
    dojo.dom.textContent(node); //返回node的文本


    dojo.dom.hasParent

    判断指定节点是否有父节点

    Usage Example:

    dojo.dom.hasParent(node);


    dojo.dom.isTag

    判断节点是否具有指定的tag

    Usage Example:

    var el = document.createElement("SPAN");
    dojo.dom.isTag(el, "SPAN"); //will return "SPAN"
    dojo.dom.isTag(el, "span"); //will return ""
    dojo.dom.isTag(el, "INPUT", "SPAN", "IMG"); //will return "SPAN"

    模块:dojo.event

    终于进入有名的dojo事件处理系统的学习了,学习前建议读者先去补习一下AOP的相关知识

    dojo.event.connect

    绑定指定的方法到指定的对象的方法上

    Usage Example:

    简单绑定1

    function doOnClick1()
    {
     alert("Clicked!");
    }
    dojo.event.connect(dojo.byId("inputTest"),"onclick","doOnClick1");

    简单绑定2

    obj = { doOnClick2: function(){ alert("Clicked!");}}
    dojo.event.connect(dojo.byId("inputTest"),"onclick",obj,"doOnClick2");

    如果存在需要进行多个事件的绑定的时候,你就会看到dojo的方便之处了

    obj2 = { doOnClick2: function(){alert("Clicked!");}}
    dojo.event.connect(dojo.byId("inputTest"),"onclick",obj,"doOnClick2");
    dojo.event.connect(dojo.byId("inputTest"),"onclick",obj2,"doOnClick2");

    connect可以对任何对象的方法进行绑定,而不是只能针对DOM对象

    dojo.event.connect(obj,"doOnclick2","doOnClick1"); //在调用obj.doOnclick2()后调用doOnClick1()


    dojo.event.connectBefore

    dojo.event.connect默认是后绑定,connectBefore则是早绑定,绑定的方法将在指定方法前执行,用法与connect一致


    dojo.event.connectAround

    Usage Example:

    function aroundTest(invocation){
      //此处可以增加代码,比如检查参数(invocation.args)
      var result = invocation.proceed();
      //此处可以增加代码,比如修改结果(result)
      return result;
    }
    dojo.event.connectAround(dojo.byId("inputTest"),"onclick","aroundTest");


    dojo.event.connectOnce
    说起这个函数,还真的是让我想了半天,直觉上我就把它想象成executeOnce,结果测试的结果让我差点想不通
    connectOnce就是指保证只绑定一次,来避免重复绑定会导致的重复执行的问题


    dojo.event.disconnect

    解除绑定,调用参数与connect一致,即可解除之前的绑定操作


    dojo.event.log

    在执行指定对象的指定方法后自动记录日志

    Usage Example:

    dojo.event.log(obj, "doOnClick"); //当调用obj.doOnClick时记录下日志"DEBUG:  ([object Object]).doOnClick : "

    你也可以这样写:

    dojo.event.log({srcObj: obj, srcFunc: "doOnClick"});


    dojo.event.kwConnect

    kwConnect可以做到更加灵活的绑定,比如可以设置延迟执行绑定

    Usage Example:

    dojo.event.kwConnect({
      srcObj: dojo.byId("inputTest"),
      srcFunc: "onclick",
      adviceObj: obj,
      adviceFunc: "doOnclick2",

      type: "before", //默认为"after",可选: "before", "around",注意:type是用来决定adviceFunc的行为的,如果为"around",则aroundFunc将失效
      aroundObj: null,
      aroundFunc: null, //如果指定了aroundFunc,则其将对adviceFunc进行拦截,但是当type为"around"时,则aroundFunc将不会执行
      once: false, //默认为false,允许重复绑定
      delay: 3000, //延时3秒后执行adviceFunc
      rate: 0, //这个从源代码没有看懂起什么作用
      adviceMsg: false //这个从源代码没有看懂起什么作用
    });


    dojo.event.kwDisconnect

    用来解除使用kwConnect指定的绑定


    模块:dojo.event.topic

    Topic机制与Advice机制都能够实现事件的绑定,但是显然,Topic更适合处理多重绑定。
    发布主题,然后由用户订阅的机制就是一个典型的观察者模式

    dojo.event.topic.registerPublisher

    注册主题发布器

    Usage Example:

    dojo.event.topic.registerPublisher("myTopic", obj, "doOnClick2");


    dojo.event.topic.subscribe

    订阅主题

    Usage Example:

    dojo.event.topic.subscribe("myTopic", "test"); //执行obj.doOnClick2()以后会自动执行test()


    dojo.event.topic.unsubscribe

    取消订阅主题

    Usage Example:

    dojo.event.topic.unsubscribe("myTopic", "test");


    dojo.event.topic.destroy

    删除主题,此主题所有的订阅都将失效

    Usage Example:

    dojo.event.topic.destroy("myTopic");


    模块:dojo.event.browser

    dojo.event.browser.addListener

    增加监听器

    Usage Example:

    function listener()
    {
      alert("ok");
    }
    dojo.event.browser.addListener(document, 'mousedown', listener); //事件名称可以加上"on",也可以没有"on"
    dojo.event.browser.addListener(document, 'onmousedown', listener, true); //capture为真表示不受上层元素的事件控制


    dojo.event.browser.removeListener

    清除监听器(这个方法似乎是无效的)


    dojo.event.browser.callListener

    调用监听器

    Usage Example:

    dojo.event.browser.callListener(listener, document);


    dojo.event.browser.stopPropagation

    阻止Event传播

    Usage Example:

    dojo.event.browser.stopPropagation();


    dojo.event.browser.preventDefault

    将当前事件的返回值设置为false

    Usage Example:

    dojo.event.browser.preventDefault();


    dojo.event.browser.keys

    键定义:
      KEY_BACKSPACE: 8,
      KEY_TAB: 9,
      KEY_ENTER: 13,
      KEY_SHIFT: 16,
      KEY_CTRL: 17,
      KEY_ALT: 18,
      KEY_PAUSE: 19,
      KEY_CAPS_LOCK: 20,
      KEY_ESCAPE: 27,
      KEY_SPACE: 32,
      KEY_PAGE_UP: 33,
      KEY_PAGE_DOWN: 34,
      KEY_END: 35,
      KEY_HOME: 36,
      KEY_LEFT_ARROW: 37,
      KEY_UP_ARROW: 38,
      KEY_RIGHT_ARROW: 39,
      KEY_DOWN_ARROW: 40,
      KEY_INSERT: 45,
      KEY_DELETE: 46,
      KEY_LEFT_WINDOW: 91,
      KEY_RIGHT_WINDOW: 92,
      KEY_SELECT: 93,
      KEY_F1: 112,
      KEY_F2: 113,
      KEY_F3: 114,
      KEY_F4: 115,
      KEY_F5: 116,
      KEY_F6: 117,
      KEY_F7: 118,
      KEY_F8: 119,
      KEY_F9: 120,
      KEY_F10: 121,
      KEY_F11: 122,
      KEY_F12: 123,
      KEY_NUM_LOCK: 144,
      KEY_SCROLL_LOCK: 145


    dojo.event.browser.currentEvent

    最近一次的Event,其属性包括:

    altKey  //检查alt键的状态,当alt键按下时,值为 true
    button  //检查按下的鼠标键,0 没按键,1 按左键,2 按右键,3 按左右键,4 按中间键,5 按左键和中间键,6 按右键和中间键,7 按所有的键
      //这个属性仅用于onmousedown, onmouseup, 和 onmousemove 事件。对其他事件,不管鼠标状态如何,都返回 0(比如onclick)
    clientX  //返回鼠标在窗口客户区域中的X坐标
    clientY  //返回鼠标在窗口客户区域中的Y坐标
    ctrlKey  //检查ctrl键的状态,当ctrl键按下时,值为 true
    fromElement //检测 onmouseover 和 onmouseout 事件发生时,鼠标所离开的元素
    keyCode  //检测键盘事件相对应的内码,仅当type为keydown,keyup,keypress时才有效
    offsetX  //检查相对于触发事件的对象,鼠标位置的水平坐标
    offsetY  //检查相对于触发事件的对象,鼠标位置的垂直坐标
    propertyName //设置或返回元素的变化了的属性的名称,你可以通过使用 onpropertychange 事件,得到 propertyName 的值
    screenX  //检测鼠标相对于用户屏幕的水平位置
    screenY  //检测鼠标相对于用户屏幕的垂直位置
    shiftKey //检查shift键的状态,当shift键按下时,值为true
    srcElement //返回触发事件的元素
    srcFilter //返回触发 onfilterchange 事件的滤镜
    toElement //检测 onmouseover 和 onmouseout 事件发生时,鼠标所进入的元素
    type  //返回没有“on”作为前缀的事件名,比如click, mousedown
    x  //返回鼠标相对于css属性中有position属性的上级元素的x轴坐标。如果没有css属性中有position属性的上级元素,默认以BODY元素作为参考对象
    y  //返回鼠标相对于css属性中有position属性的上级元素的y轴坐标。如果没有css属性中有position属性的上级元素,默认以BODY元素作为参考对象
    target  //同srcElement
    currentTarget
    layerX  //同offsetX
    layerY  //同offsetY
    pageX  //无水平滚动条的情况下与clientX同
    pageY  //无水平滚动条的情况下与clientY同
    relatedTarget // 仅当type为mouseover,mouseout时才有效
    keys  //与dojo.event.browser.keys相同,仅当type为keydown,keyup,keypress时才有效
    charCode //键值,仅当type为keypress时才有效


    dojo.event.browser.isEvent

    判断指定对象是否为event对象

    Usage Example:

    dojo.event.browser.isEvent(dojo.event.browser.currentEvent); //当dojo.event.browser.currentEvent不为null时返回true

  • 相关阅读:
    while 循环 。。
    数据运算,运算符
    字符串常用操作
    列表常用操作
    三级菜单
    杂七杂八
    简单的登陆程序001
    猜年龄游戏
    实现密文输入密码
    使用urllib2打开网页的三种方法
  • 原文地址:https://www.cnblogs.com/new0801/p/6176015.html
Copyright © 2020-2023  润新知