jQuery在IE 11上无法工作

49

对象不支持属性或方法'addEventListener'

'jQuery' is undefined 

我正在使用IE 11,

/jquery-2.1.1.min.js

jquery-migrate-1.1.1.js

和jquery-ui-1.11.0.custom/jquery-ui.js(主题定制器)。

在2.1.1之前,我在Chrome中使用1.11.1(正常工作)。

我尝试过这个修复方法,但对我没有起作用。


5
IE11支持addEventListener()方法。您当前运行在某种兼容模式下,请检查您的选项和控制台。 - Frédéric Hamidi
2
我的页面是一个内部网站,IE浏览器默认设置了兼容模式。感谢您的解决方案,这已经修复了问题。 - Simon.
1
@FrédéricHamidi 提出的解决方案也为我解决了这个问题。你们中的任何一个都应该将其作为下面的答案并标记为未来读者所用的答案。 :) - FooBar
38
要禁用兼容模式,请在HTML头部添加 <meta http-equiv="X-UA-Compatible" content="IE=edge"> - Arnaud
在我的情况下,当我回到旧版本的jquery时,它开始工作了。即使我没有运行兼容模式,使用jquery 2.2.3仍会显示“$未定义”。我将其切换到1.11.3,它就像魔法般地工作了。 - Chris Walker
6个回答

114

正如 Arnaud 在原帖的评论中建议的那样,您应该将此放在html头部:

As Arnaud suggested in a comment to the original post, you should put this in your html header:
<meta http-equiv="X-UA-Compatible" content="IE=edge">

我不想因此获得任何信誉,我只是想让更多人看到这里。


所以,我假设如果您的网站采用MVC格式开发,并且有很多部分视图,那么这将放在Shared / _Layout页面中? - Brian
@Brian。那我就假设你正在使用asp.net,因此我一无所知。但我进行了快速搜索,似乎有很多关于放置元标记的答案。 - Conny Olsson
1
我的网页在Google Chrome中正确加载和运行,但在Internet Explorer中拒绝运行JavaScript。这个解决方案也解决了我的问题。 - Ro Yo Mi
1
你无论如何都会得到信用点! :) 谢谢.. 这对我解决了问题。也感谢 @Arnaud。 - TVBZ
如果你不想因此获得任何信誉,你可以将其制作成维基百科;)而且在所选答案下的评论是非常显眼的位置。 - The Student

47

这个问题是因为页面是一个内部网站,并且IE浏览器将其兼容模式设为默认。不过,IE11仍支持addEventListener()方法。


8

我的问题是我使用了es6的箭头函数=>,而不是function ()

=>替换为function ()后问题得到解决。

我原本以为这是一个jQuery的问题。


1
在我的情况下,将“x_ua_compatible”标签添加到页面上并没有起作用。相反,我通过IIS将其添加为HTTP响应头,并且这样做很好。
在IIS管理器中选择站点,然后打开HTTP响应头并单击“添加”。

enter image description here

网站无需重启,但我需要按Ctrl+F5来强制刷新页面。


1
感谢@Arnaud和@Conny指出这个答案。这真的帮了我很多。 我想在这里补充一点,就是在所有meta标签之前,在标题标签中添加这行代码<meta http-equiv="x-ua-compatible" content="IE=edge">是必须的,因为它覆盖了IE的兼容模式。

0
将此元标记放在 head 标记之后。
<meta http-equiv="x-ua-compatible" content="IE=edge">

应该是 content="IE=edge" - god_is_love
1
你为什么要复制旧答案? - Ken Sharp

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