javascript – attachEvent在IE> 8.0中不起作用

前端之家收集整理的这篇文章主要介绍了javascript – attachEvent在IE> 8.0中不起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用attachEvent一段时间,但似乎IE不再支持这个了吗?
window.attachEvent("onload",Start_Wysiwyg);
window.attachEvent("onscroll",ScrollEditBar,false);

有人有解决这个问题的办法吗?

解决方法

.attachEvent()在IE9中被弃用,并已在IE11中删除.

标准是.addEventListener()(MSDN docs). MDN文档有一个section about compatibility.

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

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,useCapture);
    };
}

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

您可以在@MartyIX链接duplicate question中阅读更多关于您的问题的评论.在这里的答案/评论中还有一些细微差别和方法,例如IE9要求<!DOCTYPE html>以便使用.addEventListener().

原文链接:https://www.f2er.com/js/154272.html

猜你在找的JavaScript相关文章