我正在使用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().