1、window.event
(1)问题:只能在IE下运行,在FF下不能,是因为Firefox的event只能在事件发生的现场使用。
(2)解决:
a.可以这样解决
<input id="btn1" type="button" />
window.onload = function(){
var btn1 = document.getElementById('btn1');
btn1.onmouseover=function(ev){
var myEvent=ev||window.event;
alert(myEvent.clientX);
alert(myEvent.clientY);
}
}
b.或者可以通过给函数的参数传递event对象。
<input type="button" onmousemove="showDiv(event);"//event不需要加引号
function showDiv(ev)
{
var myEvent=ev||window.event;
myEvent.clientX;
myEvent.clientY;
}
2、添加事件:attachEvent和addEventListener
(1)问题:
FF使用addEventListener :[target.addEventListener(type, listener, useCapture); ][obj.addEventListener(“click”, myFunction);]
IE8及更早的版本使用attachEvent:[attachEvent(“onclick”, myFunction)]
(2)解决:
if (document.attachEvent)
document.attachEvent("click", clickHandler,false);
else
document.addEventListener("onclick",clickHandler);
封装函数:
function addHandler(element,type,handler) {
//DOM 2级处理 chrome ff
if (element.addEventListener) {
element.addEventListener(type,handler,false);
}
//IE事件处理
else if (element.attachEvent) {
element.attachEvent('on'+type,handler);
}
//DOM 0级处理 更低级的浏览器
else{
element['on'+type]=handler;
}
}
3、