JS自定義事件(Dom3級事件下)


原文出處:  http://www.w3cfuns.com/notes/11861/e21736a0b15bceca0dc7f76d77c2fb5a.html 。 我拿出作者中的一段,感謝作者原創。

 

DOM中的事件模擬(自定義事件):

  DOM3級還定義了自定義事件,自定義事件不是由DOM原生觸發的,它的目的是讓開發人員創建自己的事件。要創建的自定義事件可以由createEvent("CustomEvent"); 返回的對象有一個initCustomEvent()方法接收如下四個參數。
  1)type:字符串,觸發的事件類型,自定義。例如 “keyDown”,“selectedChange”;
  2)bubble(布爾值):標示事件是否應該冒泡;
  3)cancelable(布爾值):標示事件是否可以取消;
  4)detail(對象):任意值,保存在event對象的detail屬性中;

可以像分配其他事件一樣在DOM中分派創建的自定義事件對象。如:


   
  var  div = document.getElementById("myDiv");
  EventUtil.addEventHandler(div,"myEvent", function () {
    alert("div myEvent!");
  });
  EventUtil.addEventHandler(document,"myEvent",function(){
    alert("document myEvent!");
  });
  if(document.implementation.hasFeature("CustomEvents","3.0")){
    var e = document.createEvent("CustomEvent");
    e.initCustomEvent("myEvent",true,false,"hello world!");
    div.dispatchEvent(e);
  }
  這個例子中創建了一個冒泡事件“myEvent”。而event.detail的值被設置成了一個簡單的字符串,然后在div和document上偵聽該事件,因為在initCustomEvent中設置了事件冒泡。所以當div激發該事件時,瀏覽器會將該事件冒泡到document。
  IE中的事件模擬(IE8及之前版本中):
  與DOM中事件模擬的思路類似,先創建event對象,再為其指定相應信息,然后再使用該對象來觸發事件。當然IE在實現以下每個步驟都不太一樣。
  例如:
  var btn = document.getElementById("myBtn");
  //創建事件對象,不接受任何參數,結果會返回一個通用的event對象,你必須為該event對象指定所有必要的信息。
  var event  = document.createEventObject();
  //初始化事件對象
  event.screenX = 100;
  event.screenY = 0;
  event.clientX = 0;
  event.clientY =0;
  event.ctrlKey = false;
  event.altKey = false;
  event.shiftKey = false;
  event.button = 0;

  //觸發事件
  btn.fireEvent("onclick",event);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM