当前位置: 首页 > 编程笔记 >

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

澹台文博
2023-03-14
本文向大家介绍js 实现一些跨浏览器的事件方法详解及实例,包括了js 实现一些跨浏览器的事件方法详解及实例的使用技巧和注意事项,需要的朋友参考一下

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高级程序设计第三版》

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

 类似资料:
  • 本文向大家介绍JS实现的跨浏览器解析XML文件实例,包括了JS实现的跨浏览器解析XML文件实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS实现的跨浏览器解析XML文件的方法。分享给大家供大家参考,具体如下: 下列代码把一个 XML 文档 ("note.xml") 载入 XML 解析器中: PS:关于xml格式文件,小编这里再来为大家推荐几款在线工具,相信大家在今后的编程开发中可以用

  • 本文向大家介绍js实现跨域的方法实例详解,包括了js实现跨域的方法实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js实现跨域的方法。分享给大家供大家参考。具体分析如下: 由于同源策略的限制,XMLHttpRequest只允许请求当前源(包含域名、协议、端口)的资源。 json与jsonp的区别: JSON是一种数据交换格式,而JSONP是一种依靠开发人员创造出的一种非官方跨域数据

  • 本文向大家介绍JavaScript实现跨浏览器的添加及删除事件绑定函数实例,包括了JavaScript实现跨浏览器的添加及删除事件绑定函数实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript实现跨浏览器的添加及删除事件绑定函数。分享给大家供大家参考。具体如下: IE 的事件绑定函数是 attachEvent;而 Firefox, Safari 是 addEventLis

  • 本文向大家介绍js事件处理程序跨浏览器解决方案,包括了js事件处理程序跨浏览器解决方案的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了js事件处理程序跨浏览器解决方案,供大家参考,具体内容如下 再为大家分享js原生事件处理跨浏览器的代码: 以上就是本文的全部内容,希望对大家解决js事件处理程序跨浏览器有所帮助。

  • 本文向大家介绍js跨浏览器的事件侦听器和事件对象的使用方法,包括了js跨浏览器的事件侦听器和事件对象的使用方法的使用技巧和注意事项,需要的朋友参考一下 本文特意为跨浏览器实现添加事件侦听器和跨浏览器事件对象的使用方法做了下总结,并把这些方法打包,欢迎大家学习。 打包的一个EventUtil对象 测试代码 以上就是跨浏览器实现添加事件侦听器和跨浏览器事件对象的使用方法,希望对大家的学习有所帮助。

  • 本文向大家介绍JS 实现计算器详解及实例代码(一),包括了JS 实现计算器详解及实例代码(一)的使用技巧和注意事项,需要的朋友参考一下 Javascript 实现计算器: 系列文章: JS 实现计算器详解及实例代码(一) Javascript 实现计算器时间功能详解及实例(二) 小型JavaScript计算器 自己寻思出的解决方案,比较笨拙的方法,虽然完成了但是还有不少bug,用的方法也不是最有效