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


Posted in Javascript onOctober 27, 2016

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

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

Javascript 相关文章推荐
用JavaScript页面不刷新时全选择,全删除(GridView)
Apr 14 Javascript
javascript dom 基本操作小结
Apr 11 Javascript
jQuery事件绑定.on()简要概述及应用
Feb 07 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
Sep 03 Javascript
html的DOM中Event对象onabort事件用法实例
Jan 21 Javascript
纯js实现仿QQ邮箱弹出确认框
Apr 29 Javascript
jquery实现Ctrl+Enter提交表单的方法
Jul 21 Javascript
基于JS实现的倒计时程序实例
Jul 24 Javascript
详解React 在服务端渲染的实现
Nov 16 Javascript
详解Vue单元测试Karma+Mocha学习笔记
Jan 31 Javascript
微信小程序如何调用新闻接口实现列表循环
Jul 02 Javascript
vue基本使用--refs获取组件或元素的实例
Nov 07 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
Oct 27 #Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
Oct 27 #Javascript
简单理解vue中el、template、replace元素
Oct 27 #Javascript
深入理解JavaScript定时机制
Oct 27 #Javascript
解析javascript图片懒加载与预加载的分析总结
Oct 27 #Javascript
js实现加载更多功能实例
Oct 27 #Javascript
Vue.js一个文件对应一个组件实践
Oct 27 #Javascript
You might like
浅析关于PHP位运算的简单权限设计
2013/06/30 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
Laravel基础_关于view共享数据的示例讲解
2019/10/14 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
javaScript 判断字符串是否为数字的简单方法
2009/07/25 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
javacript使用break内层跳出外层循环分析
2015/01/12 Javascript
Javascript中的apply()方法浅析
2015/03/15 Javascript
jquery获取复选框checkbox的值的简单实现方法
2016/05/26 Javascript
jQuery设置聚焦并使光标位置在文字最后的实现方法
2016/08/02 Javascript
vue.js中mint-ui框架的使用方法
2017/05/12 Javascript
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
2017/07/05 NodeJs
JavaScript模块模式实例详解
2017/10/25 Javascript
微信小程序中添加客服按钮contact-button功能
2018/04/27 Javascript
使用vue-router与v-if实现tab切换遇到的问题及解决方法
2018/09/07 Javascript
微信小程序使用npm包的方法步骤
2019/08/13 Javascript
在vue中使用echars实现上浮与下钻效果
2019/11/08 Javascript
jQuery实现轮播图效果
2019/11/26 jQuery
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
Python如何为图片添加水印
2016/11/25 Python
python3实现TCP协议的简单服务器和客户端案例(分享)
2017/06/14 Python
Python语言描述最大连续子序列和
2017/12/05 Python
pyinstaller还原python代码过程图解
2020/01/08 Python
TensorFLow 数学运算的示例代码
2020/04/21 Python
灵活运用CSS3特性绘制简易版围棋效果
2016/09/28 HTML / CSS
捷克领先的户外服装及配件市场零售商:ALPINE PRO
2018/01/09 全球购物
英国豪华家具和家居用品购物网站:Teddy Beau
2020/10/12 全球购物
安全检查验收制度
2014/01/12 职场文书
经典的毕业生自荐信范文
2014/04/14 职场文书
投资协议书范本
2014/04/21 职场文书
敬老模范事迹
2014/05/21 职场文书
个人整改方案范文
2014/10/25 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书
《成长的天空》读后感3篇
2019/12/06 职场文书