js 跨浏览器实现事件
我们知道不同的浏览器实现事件是不同的,就比如说我们常见的有三种方法:
1,dom0处理事件的方法,以前的js处理事件都是这样写的。
(function () {
var p=document.getElementById("huchao1");
//dom0处理方法
p.onclick=function (a) {
console.log(a.type);
// body...
}
//移除方法如下:
p.onclick=null;
// body...
})()
2,dom2 处理时间的方法 如下:可以同时添加两个相同的事件类型,移除这个时间的时候,函数必须不是匿名函数,否则不起作用
(function () {
var a=document.getElementById("huchao1");
a.addEventListener("click",function () {
console.log(this.id);
// body...
// false 表示在冒泡阶段
},false);
a.addEventListener("click",function () {
console.log("alll");
// body...
},false);
//这样移除不起作用,函数必须不是匿名函数
a.removeEventListener("click",function () {
// body...
},false);
// body...
})()
3,ie处理事件,删除事件detachEvent 注意此处是onclick ,不是click
(function () {
var btn=document.getElementById("huchao1");
btn.attachEvent("onclick",function () {
alert("dd");
// body...
})
// body...
})()
如何写一个跨浏览器的事件处理程序呢:综上所述如下:
(function () {
var EventUtil={
addHandler:function (element,type,Handler) {
//此处dom2事件
if (element.addEventListener) {
//false表示冒泡阶段
element.addEventListener(type,Handler,false);
}else if(element.attachEvent){
//ie处理事件
element.attachEvent("on"+type,Handler);
}else{
//dom0处理事件
element["on"+type]=Handler;
}
// body...
},
removeHandler:function (element,type,Handler) {
// body...
if (element.addEventListener) {
element.removeEventListener(type,Handler,false);
}else if(element.attachEvent){
element.removeEvent("on"+type,Handler);
}else{
element["on"+type]=null;
}
}
}
var btn=document.getElementById("huchao1");
var handler=function () {
alert("huchao");
// body...
}
EventUtil.addHandler(btn,"click",handler);
EventUtil.removeHandler(btn,"click",handler);
// body...
})()
(function () { var p=document.getElementById("huchao1"); //dom0处理方法 p.onclick=function (a) { console.log(a.type); // body... } //移除方法如下: p.onclick=null;
// body... })()
js 跨浏览器实现事件的更多相关文章
- js 跨浏览器获取事件信息模块
var EventUtil = { addHandler: function(element, type, handler) { if (element.addEventListener) { ele ...
- js实现一些跨浏览器的事件方法
用JavaScript实现事件的绑定,移除,以及一些常用的事件属性的获取,时常要考虑到在不同浏览器下的兼容性,下面给出了一个跨浏览器的事件对象: var EventUtil = { on: funct ...
- js事件对象--DOM中的事件对象/IE中的事件对象/跨浏览器的事件对象
事件对象 在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息.包括导致事件的元素.事件的类型,以及其他与特定事件相关的信息.例如,鼠标操作导致的事件对 ...
- Javascript跨浏览器的事件对象
一.跨浏览器的事件对象 var EventUtil = { ///添加事件 addHandler: function (element, type, handler) { if (element.ad ...
- JS跨浏览器的事件处理
1. 事件流 事件:用户或浏览器自身执行的某种动作.如click(点击事件).mouse***(鼠标事件). 事件流:页面中接收事件的顺序,也可理解为事件在页面中传播的顺序. DOM事件流包括三个阶段 ...
- 跨浏览器的事件对象-------EventUtil 中的方法及用法
什么是EventUti----封装好的事件对象 在JavaScript中,DOM0级.DOM2级与旧版本IE(8-)为对象添加事件的方法不同 为了以跨浏览器的方式处理事件,需要编写一段“通用代码”,即 ...
- js关闭浏览器窗口事件
js关闭浏览器窗口 js关闭浏览器窗口,不弹出提示框.支持ie6+,火狐,谷歌等浏览器. <html> <head /> <body> <script typ ...
- JavaScript跨浏览器绑定事件函数的优化
JavaScript作为一门基于事件驱动的语言(特别是用在DOM操作的时候),我们常常需要为DOM绑定各种各样的事件.然而,由于低版本的IE的不给力,在绑定事件和移除事件监听上都与众不同,我们常常需要 ...
- EventUtil——跨浏览器的事件对象
. 首页 博客园 联系我 前言:什么是EventUtil?. EventUtil对象全见. addHandler方法. removeHandler方法. event对象与getEvent方法. tar ...
随机推荐
- C3P0 配置
C3P0是一个开源的JDBC连接池. 在Spring中,C3P0的一些配置,介绍如下(只列了一部分,不是全部) <!-- c3p0连接池配置 --> <bean id="d ...
- bind (ERROR 502): bind(0.0.0.0:9501) failed. Error: Address already in use [98] (端口被占用)
运行 swoole_server 服务报错显示端口被占用 解决思路: 1.用命令查看该端口 看是否存在 netstat -anp | grep 9501 2.如果存在 就用 kill对应端口号 ...
- Sports
题目链接 : http://acm.hpu.edu.cn/problem.php?id=1184 或者 http://acm.nyist.net/JudgeOnline/problem.p ...
- Linux vSphere SDK for Perl 执行脚本报错
本人在gentoo系统上安装完vSphere for Perl之后,执行/usr/lib/vmware-viperl/app/vm/vminfo.pl脚本. 提示错误如下: Server vers ...
- Swift 控制语句
Control Flow指的是『逻辑控制语句』,包括if.if-else.for.for-in.while.do-while.switch等.其中大部分和OC中差不多,但Swift在某些方便增强了控制 ...
- JavaWeb之动态页面技术JSP/EL/JSTL
一.JSP技术 1.jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> - ...
- NVIDIA GPU 计算能力
Tesla V100# ARCH= -gencode arch=compute_70,code=[sm_70,compute_70] GTX 1080, GTX 1070, GTX 1060, GTX ...
- 用Merge存储引擎中间件实现MySQL分表
觉得一个用Merge存储引擎中间件来实现MySQL分表的方法不错. 可以看下这个博客写的很清楚--> http://www.cnblogs.com/xbq8080/p/6628034.html ...
- Makefile研究 (一)—— 必备语法
摘自:http://blog.csdn.net/jundic/article/details/17535445 参考文档:http://blog.csdn.net/wrx1721267632/arti ...
- 简单安装与使用composer
1.下载composer.exe工具,然后进行安装 这一步需要找到你使用的php版本文件 2.windows+r cmd 输入composer 安装中国镜像,提高使用效率 https://p ...