开发者社区> 问答> 正文

请评价以下代码并给出改进意见

if (window.addEventListener) {
  var addListener = function(el, type, listener, useCapture) {
    el.addEventListener(type, listener, useCapture);
  };
} else if (document.all) {
  addListener = function(el, type, listener) {
    el.attachEvent("on" + type, function() {
      listener.apply(el);
    });
  };
}

展开
收起
kun坤 2019-11-28 14:53:18 429 0
1 条回答
写回答
取消 提交回答
  • 不应该在 if 和 else 语句中声明 addListener 函数,应该先声明; * 不需要使用 window.addEventListener 或 document.all 来进行检测浏览器,应该使用能力检测; * 由于 attachEvent 在 IE 中有 this 指向问题,所以调用它时需要处理一下

    function addEvent(elem, type, handler) {
      if (elem.addEventListener) {
        elem.addEventListener(type, handler, false);
      } else if (elem.attachEvent) {
        elem["temp" + type + handler] = handler;
        elem[type + handler] = function() {
          elem["temp" + type + handler].apply(elem);
        };
        elem.attachEvent("on" + type, elem[type + handler]);
      } else {
        elem["on" + type] = handler;
      }
    }
    
    2019-11-28 14:53:31
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
视频内容理解的研究与实践 立即下载
回归职业教育的本质:内容为王,质量至上,赢在口碑 立即下载
回归职业教育的本质 内容为王,质量至上,赢在口碑 立即下载