首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Internet Explorer中的addEventListener

Internet Explorer中的addEventListener
EN

Stack Overflow用户
提问于 2011-08-03 21:57:28
回答 8查看 114.3K关注 0票数 69

与Internet Explorer 9中的Element对象等效的是什么?

代码语言:javascript
复制
if (!Element.prototype.addEventListener) {
    Element.prototype.addEventListener = function() { .. } 
} 

它在Internet Explorer中是如何工作的?

如果有一个函数等于addEventListener,我不知道,请解释一下。

任何帮助都将不胜感激。请随意提出一种完全不同的解决问题的方法。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-08-03 22:07:23

addEventListener是用于附加事件处理程序的合适的DOM方法。

Internet Explorer (直到版本8)使用了替代的attachEvent方法。

Internet Explorer9支持正确的addEventListener方法。

下面应该是尝试编写一个跨浏览器的addEvent函数。

代码语言:javascript
复制
function addEvent(evnt, elem, func) {
   if (elem.addEventListener)  // W3C DOM
      elem.addEventListener(evnt,func,false);
   else if (elem.attachEvent) { // IE DOM
      elem.attachEvent("on"+evnt, func);
   }
   else { // No much to do
      elem["on"+evnt] = func;
   }
}
票数 148
EN

Stack Overflow用户

发布于 2014-06-17 13:53:51

jQuery的作者John Resig提交了他的addEventremoveEvent跨浏览器实现版本,以规避与IE不正确或不存在的addEventListener的兼容性问题。

代码语言:javascript
复制
function addEvent( obj, type, fn ) {
  if ( obj.attachEvent ) {
    obj['e'+type+fn] = fn;
    obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
    obj.attachEvent( 'on'+type, obj[type+fn] );
  } else
    obj.addEventListener( type, fn, false );
}
function removeEvent( obj, type, fn ) {
  if ( obj.detachEvent ) {
    obj.detachEvent( 'on'+type, obj[type+fn] );
    obj[type+fn] = null;
  } else
    obj.removeEventListener( type, fn, false );
}

来源:http://ejohn.org/projects/flexible-javascript-events/

票数 16
EN

Stack Overflow用户

发布于 2014-09-05 04:49:39

我正在使用这个解决方案,并在IE8或更高版本中工作。

代码语言:javascript
复制
if (typeof Element.prototype.addEventListener === 'undefined') {
    Element.prototype.addEventListener = function (e, callback) {
      e = 'on' + e;
      return this.attachEvent(e, callback);
    };
  }

然后:

代码语言:javascript
复制
<button class="click-me">Say Hello</button>

<script>
  document.querySelectorAll('.click-me')[0].addEventListener('click', function () {
    console.log('Hello');
  });
</script>

这将适用于IE8和Chrome、火狐等浏览器。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6927637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档