老师有个问题

老师有个问题

function addHandler(element, type, handler){
 if (element.addEventListener) {
  // 非IE浏览器
  element.addEventListener(type, handler, true);
  // IE浏览器支持DOM2级
 }else if(element.attachEvent){
  element.attachEvent("on" + type, handler);
  // IE浏览器不支持DOM2级
 }else{
  element["on" + type] = handler;
 }
}

代码中   element["on" + type] = handler;  把它作为DOM0级事件, 但是之前老师讲的是

 element["on" + type] = null; 这样, 这样写没把它作为DOM0级事件呀,触发也什么都不会执行呀,为什么不同老师 讲的兼容浏览器的事件写法还不一样呢?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

element["on"+type]=handler 是在前两种都不兼容的情况下采用DOM0级事件处理,但是呢,在现在浏览器中一般不会执行到element["on"+type]=handler这行代码,因为除了IE浏览器、非IE浏览器,极少会用到小众的浏览器,并且一般小众浏览器的内核与主流的谷歌浏览器等是一样的,因为现在使用的都是主流的浏览器,所以element["on"+type]=null也可以理解成是不执行,但是为了兼容更严谨一些,建议写成element["on"+type]=handler 

希望可以帮到你!

好帮手慕嘟嘟 2019-08-09 18:02:04

同学你好,

①   element["on" + type] = handler;  这种写法是把它作为DOM0级事件处理的。

②   element["on" + type] = null;  是把null赋值给element["on" + type],所以不会任何事件。

③  同学方便提供老师之前讲 element["on" + type] = null;  这句代码在哪段视频中出现的吗,方便老师查看这样写的原因是什么呢。

④ 兼容IE和非IE的语法如下哦~

http://img1.sycdn.imooc.com//climg/5d4d448a0001f09e11460522.jpg

如果还有疑惑,可以在问答区再次提问,我们会继续为你解答的。

如果我的回答帮助了你欢迎采纳,祝学习愉快~


  • 提问者 原来是晓琪_ #1
    出现在js事件中 第二章第八节
    2019-08-09 23:52:01
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师