toElement的兼容写法
toElement的兼容写法
HTML
<div id='main' style='padding:10px;background-color:green;'>
<div id='kixi' style='width:200px;height:100px;background-color:blue;color:#fff;'>123</div>
</div>
CSS
/*
清晰网
kixi.com.cn
从javascript开始
*/
JavaScript
//DOM通过event对象的relatedTarget属性提供了相关元素的信息。这个属性只对于mouseover和mouseout事件才包含值;对于其他事件,这个属性的值是null。IE不支持realtedTarget属性,但提供了保存着同样信息的不同属性。在mouseover事件触发时,IE的fromElement属性中保存了相关元素;在mouseout事件出发时,IE的toElement属性中保存着相关元素。可以把下面这个跨浏览器取得相关元素的方法添加到EventUtil对象中
var EventUtil = {
//event的兼容写法
getEvent: function (event) {
return event ? event : window.event;
},
//target的兼容写法
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;
}
},
//relatedTarget的兼容写法,获取所到的DIV参数
getRelatedTarget: function (event) {
if (event.relatedTarget) {
console.log(1)
return event.relatedTarget;
} else if (event.toElement) {
console.log(2)
return event.toElement;
} else if (event.fromElement) {
console.log(3)
return event.fromElement;
} else {
console.log(4)
return null;
}
}
};
var div = document.getElementById("kixi");
EventUtil.addHandler(div, "mouseout", function (event) {
event = EventUtil.getEvent(event);
var target = EventUtil.getTarget(event);
var relatedTarget = EventUtil.getRelatedTarget(event);
//alert("Moused out of " + target.id + " to " + relatedTarget.id);
console.log(relatedTarget);
});