Javascript attachEvent不';不要在IE中工作>;8

Javascript attachEvent不';不要在IE中工作>;8,javascript,internet-explorer,Javascript,Internet Explorer,我使用attachEvent有一段时间了,但IE似乎不再支持这个了 window.attachEvent("onload",Start_Wysiwyg); window.attachEvent("onscroll",ScrollEditBar,false); 有人能解决这个问题吗?在IE9+中被弃用,在IE11中被删除 标准是()。MDN文档有一个 您只需运行一些功能检查代码来检查支持的功能是否存在: if (window.addEventListener) { // Check fo

我使用attachEvent有一段时间了,但IE似乎不再支持这个了

window.attachEvent("onload",Start_Wysiwyg);
window.attachEvent("onscroll",ScrollEditBar,false);
有人能解决这个问题吗?

在IE9+中被弃用,在IE11中被删除

标准是()。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需要
才能使用
.addEventListener()

而不是在IE 9,10,11中使用可能重复的任何人,稍后读到这篇文章的人都应该知道窗口的类型。attachEvent返回时带有“对象”和“函数”。@这是旧IEs的一个有趣的怪癖,对于函数上的
typeof
,它们不会返回
“function”
,而是返回
“object”
。他们并没有完全错,但这几乎没有什么帮助。我已经将答案的条件检查改为简单地检查是否存在,而不是检查类型,因为这对几乎所有人来说都足够了。我宁愿称它为
eventName
over
eventType
。看见