繁体   English   中英

attachEvent在IE> 8.0中不起作用

[英]attachEvent Doesn't work in IE > 8.0

我使用了一段时间的attachEvent,但似乎IE不再支持此功能?

window.attachEvent("onload",Start_Wysiwyg);
window.attachEvent("onscroll",ScrollEditBar,false);

有人对此问题有解决方案吗?

IE9 +不推荐使用.attachEvent() ,而IE11中已将其删除。

标准是.addEventListener()MSDN docs )。 MDN文档中有关于兼容性部分

您只需运行一些功能检查代码即可检查是否存在受支持的功能:

if (window.addEventListener) {
    // Check for addEventListener first, since IE9/10 have both,
    // but you should use the standard over the deprecated IE-specific one
    window.addEventListener('click', myFunc);
} else if (window.attachEvent) {
    window.attachEvent('onclick', myFunc);
}

如果必须附加大量事件侦听器,则可能只需要在变量中缓存所需的侦听器附加方法,然后使用该变量将事件附加到整个代码中,而不是在上面检查每个事件侦听器:

var addListener = function(){}; // Default to no-op function

if (window.addEventListener) {
    addListener = window.addEventListener;
} else if (window.attachEvent) {
    addListener = function(eventType, listener, useCapture) {
        // attachEvent wants 'oneventType' instead of 'eventType'
        window.attachEvent('on'+eventType, listener, useCapture);
    };
}

// Now you can add listeners with a browser-agnostic function call!
addListener('click', myFunc);
addListener('hover', myOtherFunc);

您可以在@MartyIX链接的重复问题中阅读更多内容,以评论您的问题。 答案/注释中还有其他细微差别和方法,例如IE9需要<!DOCTYPE html>才能使用.addEventListener()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM