<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 431,  comments - 344,  trackbacks - 0

    模塊: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

    posted on 2007-01-17 15:26 周銳 閱讀(439) 評論(0)  編輯  收藏 所屬分類: Ajax
    主站蜘蛛池模板: www.91亚洲| 亚洲网站在线观看| mm1313亚洲精品无码又大又粗| 亚洲国产成a人v在线| 精品久久8x国产免费观看| 亚洲自偷自拍另类图片二区| 色噜噜的亚洲男人的天堂| 国产一区二区免费视频| 日本免费xxxx色视频| 亚洲免费在线视频播放| 欧美在线看片A免费观看| 国产亚洲精品资源在线26u| 99在线免费观看| 亚洲精品视频在线| 曰曰鲁夜夜免费播放视频| 丁香婷婷亚洲六月综合色| 国产无遮挡又黄又爽免费视频| 亚洲视频一区二区三区| 最新中文字幕免费视频| 国产成人亚洲精品电影| 国产成人A亚洲精V品无码| 国产午夜无码精品免费看| 亚洲精品在线免费观看视频| 最近的免费中文字幕视频| 色噜噜狠狠色综合免费视频| 亚洲精品无码Av人在线观看国产| 久久精品无码精品免费专区| 中文字幕第一页亚洲| 亚洲AV无码AV吞精久久| 97碰公开在线观看免费视频| 国产亚洲色婷婷久久99精品 | 偷自拍亚洲视频在线观看99| 亚洲高清偷拍一区二区三区| 免费看一区二区三区四区| 亚洲国产精品嫩草影院久久| 在线观看特色大片免费网站| 亚洲第一区二区快射影院| 中文毛片无遮挡高潮免费| 老外毛片免费视频播放| 亚洲天天做日日做天天欢毛片| 日本视频免费在线|