微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.jb51.cc/js/154272.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐