js監聽事件

js監聽事件javascript

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>監聽測試</title>
</head>

<body>
<script type="text/javascript">
/*
 * 添加事件監聽函數
 * obj        要添加監聽的對象或元素
 * eventName  事件名
 * fun        監聽函數的名稱
 * param      給監聽函數傳的參數,這裏就傳了一個參數
 */
function addEventHandler(obj,eventName,fun){
    var fn = fun;
   
    if(obj.attachEvent){
        obj.attachEvent('on'+eventName,fn);
    }else if(obj.addEventListener){
        obj.addEventListener(eventName,fn,false);
    }else{
        obj["on" + eventName] = fn;
    }
}
 /*
 * 刪除事件監聽函數
 * obj        要添加監聽的對象或元素
 * eventName  事件名
 * fun         監聽函數的名稱
 */
function removeEventHandler(obj, eventName, fun) {
    if (obj.removeEventListener)
        obj.removeEventListener(eventName, fun, false);
    else if (obj.detachEvent)
        obj.detachEvent("on" + eventName, fun);
    else delete obj["on" + eventName];
}


var te1=function (){
    alert('hello world')
    }
function delte1(){
    var obj=document.getElementById("test");
     removeEventHandler(obj,'click',te1);
    }
    
    
window.onload=function(){
    var te=document.getElementById("test");
    addEventHandler(te,'click',te1);
    
    }
    
</script>

<a href="javascript:;" id="test" > 測試監聽</a>  <a href="javascript:;" onclick="delte1();"> 刪除監聽</a>
</body>
</html>

 或者:html

// event(事件)工具集,來源:github.com/markyun
  markyun.Event = {
      // 頁面加載完成後
      readyEvent : function(fn) {
          if (fn==null) {
              fn=document;
          }
          var oldonload = window.onload;
          if (typeof window.onload != 'function') {
              window.onload = fn;
          } else {
              window.onload = function() {
                  oldonload();
                  fn();
              };
          }
      },
      // 視能力分別使用dom0||dom2||IE方式 來綁定事件
      // 參數: 操做的元素,事件名稱 ,事件處理程序
      addEvent : function(element, type, handler) {
          if (element.addEventListener) {
              //事件類型、須要執行的函數、是否捕捉
              element.addEventListener(type, handler, false);
          } else if (element.attachEvent) {
              element.attachEvent('on' + type, function() {
                  handler.call(element);
              });
          } else {
              element['on' + type] = handler;
          }
      },
      // 移除事件
      removeEvent : function(element, type, handler) {
          if (element.removeEnentListener) {
              element.removeEnentListener(type, handler, false);
          } else if (element.datachEvent) {
              element.detachEvent('on' + type, handler);
          } else {
              element['on' + type] = null;
          }
      }, 
      // 阻止事件 (主要是事件冒泡,由於IE不支持事件捕獲)
      stopPropagation : function(ev) {
          if (ev.stopPropagation) {
              ev.stopPropagation();
          } else {
              ev.cancelBubble = true;
          }
      },
      // 取消事件的默認行爲
      preventDefault : function(event) {
          if (event.preventDefault) {
              event.preventDefault();
          } else {
              event.returnValue = false;
          }
      },
      // 獲取事件目標
      getTarget : function(event) {
          return event.target || event.srcElement;
      },
      // 獲取event對象的引用,取到事件的全部信息,確保隨時能使用event;
      getEvent : function(e) {
          var ev = e || window.event;
          if (!ev) {
              var c = this.getEvent.caller;
              while (c) {
                  ev = c.arguments[0];
                  if (ev && Event == ev.constructor) {
                      break;
                  }
                  c = c.caller;
              }
          }
          return ev;
      }
  };
相關文章
相關標籤/搜索