对象不支持属性或方法“attachEvent” InternetExplorer 11。

5
如果我在 IE11 上点击表单发送按钮“Saada”,则会出现错误:
Object doesn't support property or method 'attachEvent'

我发现这是一个IE11的问题,但我找到的唯一解决方法是使用我的开发者工具,并设置浏览器以IE9模式运行。

但我希望每个人都可以在不使用开发者工具的情况下使用我的网站。
你知道我可以尝试哪些其他解决方案吗?或者我需要导入其他Jquery库吗?

其他浏览器都正常工作,但只有IE11存在这个问题。

2个回答

13

在IE11中,javascript的attachEvent方法已被addEventListener方法所取代。

针对IE > 8,JQuery 1.10.1仍使用attachEvent方法。这将导致javascript编译错误。

JQuery 1.10.2似乎已解决了这个问题。

希望这可以帮到您。


1
这是一个非常晦涩的版本问题,多亏了你,我们避免了很多麻烦。 - Crescent Fresh

7

attachEvent是Internet Explorer旧版本中使用的已弃用函数。 对于现代浏览器,请改用以下方法。

el.addEventListener(evt,func,false);

请查看此处的文档。

您还可以创建一个函数,以检查要使用哪个函数。

function addListener(el, event, func){
    if (el.addEventListener) {
       el.addEventListener(event, func, false);
    }
    else {
       el.attachEvent("on"+event, func);
    }
}

那么你可以通过以下方法附加你的事件:

var element = document.getElementById('myElement');
addListener(element, 'click', function(){
    alert('You have clicked!');
});

如果您无法做到这一点,那么也许可以使用一个polyfill代替。尝试将其插入到某个地方:
if(!document.attachEvent){
  Object.prototype.attachEvent=function(event,func){
    this.addEventListener(event.split('on')[1], func);
  }
}

希望这有所帮助。

好的,我可以在页面底部简单地添加这个函数吗?它能自动修复所有问题吗? - student
我正在使用WordPress的Gravity Forms插件,但是我找不到要更改提交按钮单击代码的位置。 - student
啊,好的,我没意识到你在使用插件。试试我在答案中插入的 polyfill 代码。 - Jackson
1
我应该在这段代码中做出改变吗?现在它给了我一个额外的错误:对象不支持属性或方法'exec'。 - student
1
问题解决了!我使用了最新的jQuery版本,现在它可以在IE上运行。但我希望其他所有功能仍然正常工作 :) - student
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接