广州明生堂生物科技有限公司


js 实现一些跨浏览器的事件方法详解及实例

网络编程 js 实现一些跨浏览器的事件方法详解及实例 06-22

js实现一些跨浏览器的事件方法

  用JavaScript实现事件的绑定,移除,以及一些常用的事件属性的获取,时常要考虑到在不同浏览器下的兼容性,下面给出了一个跨浏览器的事件对象:

var EventUtil = {
  on: function(element, type, handler) {/* 添加事件 */
    if (element.addEventListener) {
      element.addEventListener(type, handler, false);
    } else if (element.attachEvent) {//IE 注意:此时事件处理程序会在全局作用域中运行,因此用attachEvent绑定的事件,此时在事件处理函数里的this 等于window,使用时要注意
      element.attachEvent("on" + type, handler);
    } else {
      element["on" + type] = handler;
    }
  },

  off: function(element, type, handler) {/* 移除事件 */
    if (element.removeEventListener) {
      element.removeEventListener(type, handler, false);
    } else if (element.detachEvent) {
      element.detachEvent("on" + type, handler);
    } else {
      element["on" + type] = null;
    }
  },

  getEvent: function(event) {/* 返回对event对象的引用 */
    return event ? event : window.event;
  },

  getTarget: function(event) {/* 返回事件的目标 */
    return event.target || event.srcElement;
  },

  preventDefault: function(event) { /* 取消事件的默认行为 */
    if (event.preventDefault) {
      event.preventDefault();
    } else {
      event.returnValue = false;
    }
  },

  stopPropagation: function(event) {/* 阻止事件冒泡 */
    if (event.stopPropagation) {
      event.stopPropagation();
    } else {
      event.cancelBubble = true;
    }
  },

  /* mouseover 和mouserout 这两个事件都会涉及把鼠标指针从一个元素的边界之内移动到另一个元素的边界之内。*/
  getRelatedTarget: function(event) {
    if (event.relatedTarget) {
      return event.relatedTarget;
    } else if (event.toElement) {//IE8 mouserout事件
      return event.toElement;
    } else if (event.fromElement) {//IE8 mouseover事件
      return event.fromElement;
    } else {
      return null;//其他事件
    }
  }
};

调用如下:

EventUtil.on(document, "click", function(event){//为document元素绑定click事件
  event = EventUtil.getEvent(event);//获取event事件对象
  alert("Screen coordinates: " + event.screenX + "," + event.screenY);
});
 

文章参考自《JavaScript高级程序设计第三版》

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

浅谈jQuery中的eq()与DOM中element.[]的区别
如下所示:!DOCTYPEhtmlhtmllang="en"headmetacharset="UTF-8"titleTitle/title/headbodyaclass="a"#1/aaclass="a"#2/aaclass="a"#3/ascriptsrc="js/jq.js"/scriptscriptvara=$('.a');varb=$('.a').eq(1);varc=

扩展jquery easyui tree的搜索树节点方法(推荐)
如下所示:/***1)扩展jqueryeasyuitree的节点检索方法。使用方法如下:*$("#treeId").tree("search",searchText);*其中,treeId为easyuitree的根UL元素的ID,searchText为检索

jQuery.datatables.js插件用法及api实例详解
1、DataTables的默认配置$(document).ready(function(){$(‘#example').dataTable();});示例:http://www.guoxk.com/html/DataTables/Zero-configuration.html2、DataTables的一些基础属性配置b


编辑:广州明生堂生物科技有限公司

标签:事件,元素,绑定,浏览器,对象