在使用以下事件处理程序时
function eventHandler(Fe,Ftype,Fhandler) {
if(window.event)
Fe.attachEvent('on'+Ftype,Fhandler);
else
Fe.addEventListener(Ftype,Fhandler,false);
}
在除了Firefox浏览器正常运行外,其他浏览器都报错,在attachEvent()出报错为:undefined is not a function;
将attachEvent()和addListenEvent()互换,则没有错误且返回正确结果。
疑惑:window.event为IE事件模型的事件对象属性。IE事件模型添加事件处理的方法是attachEvent(),为什么说没有定义呢??
不要用window.event来判断是否是IE浏览器,可以根据window.attachEvent来判断是否是IE浏览器。
你上面的代码调整为:
function eventHandler(Fe,Ftype,Fhandler) {
if(window.attachEvent)
Fe.attachEvent('on'+Ftype,Fhandler);
else
Fe.addEventListener(Ftype,Fhandler,false);
}
你这种方法我是知道的,window.event为什么不可以?再就是event属于IE的属性,为什么使用window.event来判断浏览器是IE浏览器的时候attachEvent居然报错,说没有定义的方法。
@sun懒虫:
addEventListener是W3C制定的,可以看:http://www.w3.org/TR/2013/WD-dom-20131107/
而attachEvent是IE独有的。
在360浏览器V6上,有window.event,但是没有attachEvent方法,有addEventListener方法,360V6不是IE内核。
所以使用window.event并不能判断是否是IE浏览器。
window.event 并不是ie独有的。