首页 新闻 搜索 专区 学院

IE事件模型中的window.event

0
悬赏园豆:10 [已解决问题] 解决于 2014-12-19 17:11
在使用以下事件处理程序时
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(),为什么说没有定义呢??
The_Wind_Rises的主页 The_Wind_Rises | 初学一级 | 园豆:59
提问于:2014-08-04 09:42
< >
分享
最佳答案
1

不要用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);
}

收获园豆:10
乐享程序员 | 小虾三级 |园豆:930 | 2014-08-04 20:26

你这种方法我是知道的,window.event为什么不可以?再就是event属于IE的属性,为什么使用window.event来判断浏览器是IE浏览器的时候attachEvent居然报错,说没有定义的方法。

The_Wind_Rises | 园豆:59 (初学一级) | 2014-08-05 08:56

@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浏览器。

乐享程序员 | 园豆:930 (小虾三级) | 2014-08-05 09:14
其他回答(1)
0

window.event 并不是ie独有的。

IORY | 园豆:12 (初学一级) | 2014-10-23 17:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册