[英]How do I detect document.addEventListener support in javascript
I have this javascript code: 我有这个javascript代码:
initializeEventHandlers: function() {
if ( typeof document.implementation != "undefined" &&
document.implementation.hasFeature("HTML", "1.0") &&
document.implementation.hasFeature("Events", "2.0") &&
document.implementation.hasFeature("CSS", "2.0") ) {
document.addEventListener("mouseup", this._mouseUpHandler.bindAsEventListener(this), false);
document.addEventListener("mousemove", this._mouseMoveHandler.bindAsEventListener(this), false);
}
else {
document.attachEvent( "onmouseup", this._mouseUpHandler.bindAsEventListener(this) );
document.attachEvent( "onmousemove", this._mouseMoveHandler.bindAsEventListener(this) );
}
}
That works in most browsers, but when I use IE11 it fails. 在大多数浏览器中都可以使用,但是当我使用IE11时会失败。 I know this is because IE11 removed support for attachEvent, and IE11 falls through to the else condition.
我知道这是因为IE11删除了对attachEvent的支持,而IE11陷入了else条件。 I also see that hasFeature is deprecated, so I am not sure how best to detect addEventListner support.
我还看到hasFeature已过时,因此我不确定如何最好地检测addEventListner支持。
The following code works for IE11 and Firefox, but will it work for other/older browsers? 以下代码适用于IE11和Firefox,但是它将适用于其他/较旧的浏览器吗?
initializeEventHandlers: function() {
if (document.addEventListener) {
document.addEventListener("mouseup", this._mouseUpHandler.bindAsEventListener(this), false);
document.addEventListener("mousemove", this._mouseMoveHandler.bindAsEventListener(this), false);
}
else if (document.attachEvent) {
document.attachEvent( "onmouseup", this._mouseUpHandler.bindAsEventListener(this) );
document.attachEvent( "onmousemove", this._mouseMoveHandler.bindAsEventListener(this) );
}
}
The robust and safe way to see if document accepts the method is to use "try { ... } catch (err){ ... }" construction: 查看文档是否接受该方法的健壮且安全的方法是使用“ try {...} catch(err){...}”构造:
const initializeEventHandlers = () => {
try {
if (document.addEventListener) {
document.addEventListener("mouseup", this._mouseUpHandler.bindAsEventListener(this), false);
document.addEventListener("mousemove", this._mouseMoveHandler.bindAsEventListener(this), false);
}
else if (document.attachEvent) {
document.attachEvent( "onmouseup", this._mouseUpHandler.bindAsEventListener(this) );
document.attachEvent( "onmousemove", this._mouseMoveHandler.bindAsEventListener(this) );
}
}
catch(err) {
console.info('Error', err );
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.