JS常用事件兼容性处理方法

event.js文件

//跨浏览器事件处理程序【根据能力检测调用】

var EventObject = {

//添加事件
AddEvent:function(obj , type , eventFn){
if(obj.addEventListener){//常用
obj.addEventListener(type , eventFn , false);
}
else if(obj.attachEvent){//IE8及以下
obj.attachEvent(‘on‘+type , eventFn);
}
else{//DOM零级事件处理
obj[‘on‘+type] = eventFn; //obj.onclick === obj[‘onclick‘]
}
},

//删除事件
DelEvent:function(obj , type , eventFn){
if(obj.removeEventListener){
obj.removeEventListener(type , eventFn , false);
}
else if(obj.detachEvent){
obj.detachEvent(‘on‘+type , eventFn);
}
else{
obj[‘on‘+type] = null;
}
},

//获取事件对象
GegEvent:function(event){
return event ? event : window.event;
},

//获取事件类型
GetType:function(event){
return event.type;
},

//获取事件目标
GetTarget:function(event){
return event.target || event.srcElement;
},

//阻止事件默认行为
PreventDefault:function(event){
if(event.preventDefault){
event.preventDefault();
}
else{
event.returnValue = false; //IE8及以下的版本
}
},

//阻止事件冒泡
StopPropagation:function(event){
if(event.stopPropagation){
event.stopPropagation();
}
else{
event.cancelBubble = true; //IE8及以下的版本
}
}

};

index.html页面

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>事件对象封装调用</title>
<style type="text/css">
div{border: 1px solid red; padding: 20px;}
</style>
</head>
<body>
<div id="divBox">
<input type="button" name="btn1" id="btn1" value="通用跨浏览器点击事件" />
<input type="button" name="btn2" id="btn2" value="事件类型type" />
<input type="button" name="btn3" id="btn3" value="事件目标target" />
<input type="button" name="btn4" id="btn4" value="元素节点名称target.nodeName" />
<input type="button" name="btn5" id="btn5" value="阻止事件冒泡stopPropagation()" />
<a href="http://www.baidu.com" id="Go">打开百度 阻止默认行为preventDefault()</a>
</div>
</body>
<script src="event.js" type="text/JavaScript" charset="utf-8"></script>
<script type="text/javascript">
var Box = document.getElementById("divBox");
EventObject.AddEvent(Box , "click" , mupiao);
function mupiao(){
alert("我是装按扭的DIV")
}

var btn1 = document.getElementById("btn1");

EventObject.AddEvent(btn1 , "click" , mupiao1); //添加事件方法

function mupiao1(){
alert("我调用了封装的事件对象方法!");
}

//EventObject.DelEvent(btn1 , "click" , mupiao); //删除事件方法

var btn2 = document.getElementById("btn2");
EventObject.AddEvent(btn2 , "click" , mupiao2);
function mupiao2(event){
alert(event.type); //事件类型(它是event的属性)
}

var btn3 = document.getElementById("btn3");
EventObject.AddEvent(btn3 , "click" , mupiao3);
function mupiao3(event){
var event = event || window.event;
var ele = event.target || event.srcElement;
alert(ele);//事件目标(它是event的属性)
ele.style.background = "red"
}

var btn4 = document.getElementById("btn4");
EventObject.AddEvent(btn4 , "click" , mupiao4);
function mupiao4(event){
var e = EventObject.GegEvent(event);
var ele = EventObject.GetTarget(e);
alert(ele.nodeName);//元素节点名称(它是event的属性)
}

var btn5 = document.getElementById("btn5");
EventObject.AddEvent(btn5 , "click" , mupiao5);
function mupiao5(event){
event.stopPropagation(); //阻止事件冒泡
alert("阻止事件冒泡stopPropagation()");//元素节点名称(它是event的方法)
}

var go = document.getElementById("go");
EventObject.AddEvent(go , "click" , goFn);
function goFn(event){
EventObject.PreventDefault(event);
EventObject.StopPropagation(event);
alert("阻止默认行为preventDefault()");//元素节点名称(它是event的方法)
}
</script>
</html>

时间: 2024-12-21 10:54:08

JS常用事件兼容性处理方法的相关文章

常用事件及其通用方法

1.判断事件前后的值是否发生了改变: protected boolean checkPrmtIsChange(DataChangeEvent arg0){ if(arg0.getNewValue() ==null&&arg0.getOldValue()!=null){ return true; } if(arg0.getNewValue() !=null&&arg0.getOldValue()==null){ return true; } if(arg0.getNewVal

js阻止事件冒泡的方法

/********************************************js方法***************************************************/ function doSomething(obj, evt) {    var e = (evt) ? evt : window.event; //判断浏览器的类型,在基于ie内核的浏览器中的使用cancelBubble    if (window.event) {        e.cance

IE7.JS解决IE兼容性问题方法

转自:http://code.google.com/p/ie7-js/ 使IE5,IE6兼容到IE7模式(推荐) <!--[if lt IE 7]> <script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE7.js"></script> <![endif]--> 使IE5,IE6,IE7兼容到IE8模式 <!--[if lt IE 8]> <s

js常用的小工具方法

总结一下常用的小工具底层方法 规范化时间显示 function formatTime(date){ var year = date.getFullYear() var month = date.getMonth() + 1 var day = date.getDate() var hour = date.getHours() var minute = date.getMinutes() var second = date.getSeconds() function formatNumber(n)

js 常用事件总结

无论web端还是手机端,用户的交互总伴随着事件监听 下面是我总结的一些常用到的事件 1.监听标签内容变化 非input元素 $(dom).bind('DOMNodeInserted',function(e){ console.log($(e).target.html) //IE8-不支持 }) $(dom).bind('DOMNodeRemoved',function(e){ console.log($(e).target.html) //IE8-不支持 }) input元素 var input

js常用事件及其用法

1.onload 和 onunload 事件 onload事件:指的是页面加载事件. onunload事件:指的是离开页面事件 <!DOCTYPE html> <html> <body onload="test()"> <script> function test() { if (navigator.cookieEnabled==true) { alert("已启用 cookie") } else { alert(&q

js 常用事件句柄总结

HTML 4.0 的新特性之一是有能力使 HTML 事件触发浏览器中的动作(action),比如当用户点击某个 HTML 元素时启动一段 JavaScript.下面是一个属性列表,这些属性可插入 HTML 标签来定义事件动作. 属性 当以下情况发生时,出现此事件 FF N IE onabort 图像加载被中断 1 3 4 onblur 元素失去焦点 1 2 3 onchange 用户改变域的内容 1 2 3 onclick 鼠标点击某个对象 1 2 3 ondblclick 鼠标双击某个对象 1

JS常用事件

onload            某个页面或图像被完成加载onunload        用户退出页面 onabort          图像加载被中断 onblur            元素失去焦点 onchange       用户改变域的内容onerror          当加载文档或图像时发生某个错误 onfocus         元素获得焦点 onclick            鼠标点击某个对象 ondblclick        鼠标双击某个对象 onkeydown    

js绑定事件方法:addEventListener与attachEvent的不同浏览器的兼容性写法

js的事件绑定方法中,ie仅仅支持attachEvent,而FF和Chrome仅仅支持addEventListener,所以就必须为这两个方法做兼容处理,原理是先推断attachEvent仅仅否为真(存在),假设为真则用attachEvent()方法.否则的话就用addEventListener(). 另外,为了避免每次绑定事件时都要做推断.能够封装一个函数myAddEvent(obj,ev,fn){}. 代码例如以下: <!DOCTYPE html> <html> <hea