1. 程式人生 > >javascript中事件對象註冊與刪除

javascript中事件對象註冊與刪除

ie8 ply 設置 als google 一個 標簽設置 this ...

事件對象

註冊事件

  1. 直接給dom對象設置屬性,只能給對象設置一個屬性,如果設置多個事件處理函數,則最後的生效;
  2. 給html標簽設置屬性,(若法1和法2同時使用,則法1生效);
  3. 事件註冊
    綁定事件監聽函數
    addEventListener("click", fun, false); 兼容火狐、google、ie9;
    attachEcent("onclick", fun); 兼容ie8及以下。
    綁定事件監聽函數可以和前面兩個同時使用

刪除事件

  1. btn.onclick = null; 將事件置空,刪除事件,可以使用在火狐,google,ie所有瀏覽器,但不能刪除通過綁定監聽函數設置的監聽事件
  2. removeEventListener 刪除事件,兼容火狐,google,ie9

修改this的指向

call函數

? fun.call(參數1,參數2, 參數3, ...)
執行fun函數,並且將參數1的值賦給this,參數2,參數3作為實參傳遞給形參。

apply函數

? fun.apply(參數1,[參數2, 參數3, ...])
執行fun函數,並且將參數1的值賦給this,參數2,參數3作為實參傳遞給形參,以數組形式傳遞。

註冊事件兼容寫法

/*
   參數:
       給誰添加
       事件類型
       處理函數

       適配標準瀏覽器和IE低版本
   */
function addEvent(target, type, handler) {
    if (target.addEventListener) {
        target.addEventListener(type, handler, false);
    } else {
        window[handler] = function () {
            handler.call(target);
        }
        target.attachEvent("on" + type, window[handler]);
    }
}

刪除事件兼容寫法

//刪除事件
function removeEvent(target, type, handler) {
    if (target.removeEventListener) {
        target.removeEventListener(type, handler, false);
    } else {
        target.detachEvent("on" + type, window[handler]);
    }
}

javascript中事件對象註冊與刪除