与Internet Explorer 9中的Element对象等效的是什么?
if (!Element.prototype.addEventListener) {
Element.prototype.addEventListener = function() { .. }
}
它在Internet Explorer中是如何工作的?
如果有一个函数等于addEventListener
,我不知道,请解释一下。
任何帮助都将不胜感激。请随意提出一种完全不同的解决问题的方法。
发布于 2011-08-03 22:07:23
addEventListener
是用于附加事件处理程序的合适的DOM方法。
Internet Explorer (直到版本8)使用了替代的attachEvent
方法。
Internet Explorer9支持正确的addEventListener
方法。
下面应该是尝试编写一个跨浏览器的addEvent
函数。
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;
}
}
发布于 2014-06-17 13:53:51
jQuery的作者John Resig提交了他的addEvent
和removeEvent
跨浏览器实现版本,以规避与IE不正确或不存在的addEventListener
的兼容性问题。
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 );
}
发布于 2014-09-05 04:49:39
我正在使用这个解决方案,并在IE8或更高版本中工作。
if (typeof Element.prototype.addEventListener === 'undefined') {
Element.prototype.addEventListener = function (e, callback) {
e = 'on' + e;
return this.attachEvent(e, callback);
};
}
然后:
<button class="click-me">Say Hello</button>
<script>
document.querySelectorAll('.click-me')[0].addEventListener('click', function () {
console.log('Hello');
});
</script>
这将适用于IE8和Chrome、火狐等浏览器。
https://stackoverflow.com/questions/6927637
复制相似问题