什么是等效于 Internet Explorer 9 中的元素对象?
if (!Element.prototype.addEventListener) {
Element.prototype.addEventListener = function() { .. }
}
它在 Internet Explorer 中是如何工作的?
如果有一个函数等于addEventListener
我不知道,请解释。
任何帮助,将不胜感激。随意提出一种完全不同的解决问题的方法。
什么是等效于 Internet Explorer 9 中的元素对象?
if (!Element.prototype.addEventListener) {
Element.prototype.addEventListener = function() { .. }
}
它在 Internet Explorer 中是如何工作的?
如果有一个函数等于addEventListener
我不知道,请解释。
任何帮助,将不胜感激。随意提出一种完全不同的解决问题的方法。
addEventListener
是用于附加事件处理程序的正确 DOM 方法。
Internet Explorer(最高版本 8)使用了另attachEvent
一种方法。
Internet Explorer 9 支持正确的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;
}
}
约翰Resig的,jQuery的作者,他提交的跨浏览器实现的版本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 );
}
资料来源:http : //ejohn.org/projects/flexible-javascript-events/
我正在使用此解决方案并在 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、Firefox 等。
这是为那些喜欢漂亮代码的人准备的东西。
function addEventListener(obj,evt,func){
if ('addEventListener' in window){
obj.addEventListener(evt,func, false);
} else if ('attachEvent' in window){//IE
obj.attachEvent('on'+evt,func);
}
}
无耻地从Iframe-Resizer窃取。