浏览器间的事件区别

1、event的relatedTarget、fromElemen和toElement属性


mouseover和mouseout事件都涉及鼠标指针从一个元素边界移入另一个元素的边界中。而获得鼠标的元素是主要作用对象,可以移入的元素即为相关元素。


relatedTarget属性:

event对象的relatedTarget属性提供了相关元素的信息,该对象只对mouseover事件和mouseout事件有值,其余事件属性值为null,且relatedTarget属性不支持IE浏览器。

在mouseover事件中表示鼠标来自哪个元素,即鼠标移到某个节点时,他之前所在的节点。

在mouseout事件中表示鼠标去往的那个元素,即鼠标离开某个节点时,它新到的节点。


fromElement属性和toElement属性:

由于在IE中不支持relatedTarget属性,故而他提供了自身的2个属性来记录相关元素的信息。

fromElement在mouseover事件中表示鼠标来自哪个元素。

toElement在mouseout事件中指向鼠标去往的那个元素。


2、event的srcElement和target属性

srcElement和target都可以捕获当前事件作用的对象。

event.srcElement.tagName可以捕获事件作用对象的名称。

在IE浏览器下,event对象有srcElement属性,但没有target属性。

而在火狐等其他浏览器中,有target属性,但是没有srcElement属性。

这两个属性的作用都是一样的只是IE与其他浏览器的区别而已。


3、event和window.event对象

在IE/Opera浏览器中支持window.event作为事件对象,而在火狐等浏览器中事件对象是event。


4、元素的addEventListener方法和attachEvent方法

addEventListener()和attachEvent()都可以一次性添加多个事件。

在IE浏览器中,支持attacEvent(type,fn),不支持捕获。

在火狐等浏览器中,支持addEventListener(type,fn,useCapture)。

注意:参数type表示事件类型,fn表示事件的执行函数,useCapture表示是否捕捉,值为true/false。

        在attachEvent方法中type是含on的事件名,例如:onclick。

        在addEventListener方法中type是不含on的事件名,例如:click。


5、元素的removeEventListener方法和detachEvent方法

removeEventListener()和detachEvent()都可以移除一个元素的对应事件

在IE浏览器中,支持detachEvent(type,fn),不支持捕获。

在火狐等浏览器中,支持removeEventListener(type,fn,userCapture)。


6.event的cancelBubble属性和stopPropagation方法

cancelBubble和stopPropagation()都可以阻止事件冒泡。

window.event.cancelBubble=true在IE浏览器下有效 。
event.stopPropagation()在Firefox等浏览器下有效 。


7、event的preventDefault方法和returnValue属性

preventDefault()和returnValue都具有取消事件默认行为的作用。

IE浏览器支持:window.event.returnValue=false。

火狐等浏览器支持:event.preventDefault()。


跨浏览器获取相关对象的方法:

var EventUtil = {
	    getEvent: function (event) {
	        return event ? event : window.event;
	    },
	    getTarget: function (event) {
	        return event.target || event.srcElement;
	    },
	    addHandler: function (element,type,handler) {
	        if (element.addEventListener) {
	            element.addEventListener(type, handler, false);
	        } else if (element.attachEvent) {
	            element.attachEvent("on" + type, handler);
	        } else {
	            element["on" + type] = handler;
	        }
	    },
	    removeHandler:function (element,type,handler){
	    	if(element.removeEventLister){
	    		element.removeEventListener(type, handler, false);
	    	}else if(element.removeEventLister){
	    		element.detachEvent("on" + type, handler);
	    	}else {
	    		element["on" + type] = return false;
	    	}
	    },
	    getRelatedTarget: function (event) {
	        if (event.relatedTarget) {
	            return event.relatedTarget;
	        } else if (event.toElement) {
	            return event.toElement;
	        } else if (event.fromElement) {
	            return event.fromElement;
	        } else {
	            return null;
	        }
	    },
	    stopEvent:function(event){
			if(event.cancelBulle){
				event.cancelBubble=true;
			}else {
				event.stopPropagation();
			}
	    },
	    stopPrevent:function(event){
	    	if(!window.event.returnValue){
	    		event.preventDefault();
	    	}else{
	    		window.event.returnValue = false;
	    	}
	    }
	};




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值