什麼是dispatchEvent?

事件觸發器javascript

這以前,一直都不明白這是說的什麼,可是當查看w3school後,對這個方法有了必定的理解。java

在w3school中,這樣說明這個方法:瀏覽器

dispatchEvent() 方法給節點分派一個合成事件。spa

語法:prototype

dispatchEvent(evt)

  

參數 描述
evt 必需。要分派的 Event 對象。

瀏覽器都有原生的方法來支持,可是在兼容性上又有很大的出入,這種兼容性的問題徹底在乎料之中,IE有本身的方法,其餘標準瀏覽器也有一套方法,不說誰的方法好與很差,對於WEB開發者來講搞出幾套方法就是對開發人員的一種折磨。IE支持fireEvent方法來實現事件觸發,標準瀏覽器支持dispatchEvent來實現事件觸發,兩面派的IE9是二者都支持。下面是出自prototype.js的源碼(其實我是在查閱資料時從司徒正美的博客複製過來的):對象

  var fireEvent = function fireEvent(element,event){
    if (document.createEventObject){
      // IE瀏覽器支持fireEvent方法
      var evt = document.createEventObject();
      return element.fireEvent('on'+event,evt)
    }
    else{
      // 其餘標準瀏覽器使用dispatchEvent方法
      var evt = document.createEvent( 'HTMLEvents' );
      // initEvent接受3個參數:
      // 事件類型,是否冒泡,是否阻止瀏覽器的默認行爲
      evt.initEvent(event, true, true);
      return !element.dispatchEvent(evt);
    }
  };
相關文章
相關標籤/搜索