Internet Explorer 8中的jQuery问题

78 javascript jquery internet-explorer-8

我试图让我的jQuery函数在IE8上工作.我正在从Google的服务器加载库(http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js).

$(function(){})永远不会被调用.相反,我得到一个错误Object expected.我打开了开发人员并typeof $在控制台中运行,它就像是undefined.

我试过去其他我知道使用jQuery(jquery.com)的网站,那些都有用,有什么我可能会在这里缺少的吗?

小智 42

在定义变量之前,在变量之前写下"var".IE8在没有"var"时死亡.

  • 对不起,但事实并非如此.我们使用`var`来定义具有局部范围的变量.如果定义一个没有`var`的变量,它实际上会创建一个具有全局范围的属性,即作为window对象的属性.有关更多信息,请参阅此问题:http://stackoverflow.com/questions/1470488/difference-between-using-var-and-not-using-var-in-javascript (3认同)
  • 这实际上解决了IE8的一个问题. (2认同)

小智 39

更正:

检查您的脚本包含标记,是否正在使用

type="application/javascript" src="/path/to/jquery" 
Run Code Online (Sandbox Code Playgroud)

改成

type="text/javascript" src="/path/to/jquery" 
Run Code Online (Sandbox Code Playgroud)


Jef*_*ser 38

我遇到了类似的问题.在IE7,Firefox和IE8中运行的东西在IE7兼容模式下运行; 但不是'正常'的IE8.我的解决方案是将此代码放在标题中

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 
Run Code Online (Sandbox Code Playgroud)

至于为什么jquery不能在IE8中工作,我不清楚.

  • 如果您有更好的解决方案,请分享.许多在IE中工作的方法都是黑客攻击. (33认同)
  • 那太可怕了!它没有解决问题; 它只是乱砍它,它可能会产生一大堆其他问题.(IE7兼容模式实际上并不完全与IE7相同,它有自己的错误,怪癖和故障,不会出现在正常的IE7和IE8中) (19认同)
  • 因为有人贬低了这一点; 请告诉我们原因,请突出您的首选方法. (11认同)
  • 如果它是一个黑客,它是微软推荐的.http://msdn.microsoft.com/en-us/library/cc288325(v=vs.85).aspx (8认同)
  • 我有这个问题,我用理查德的解决方案解决了这个问题.我将所有<script type ="application/javascript"...改为<script type ="text/javascript",包括我对google cdn的jquery引用,IE8开始工作.我没有必要将整个页面抛到兼容模式来执行它. (7认同)

小智 12

解决方案是升级到最新版本的jQuery.我有完全相同的问题,并升级到1.4.2,它在IE8中再次正常工作.

似乎完全向后兼容我所做的所有jQuery 1.3.2的东西,所以没有投诉!

  • 无论这意味着什么,我都有1.8的问题. (3认同)

小智 10

我遇到了这个问题并尝试了这里提到的解决方案但没有成功.

最后,我意识到我正在使用http URL嵌入脚本的页面链接到脚本的Google CDN版本https page.

这导致IE无法加载jquery(它会提示用户是否只想加载安全内容).更改Google CDN URL以使用https方案为我解决了问题.


stu*_*net 8

有些人在这篇文章上磕磕绊绊可能会在jquery和IE8中遇到这个问题,因为他们正在使用> = jQuery v2.使用此代码:

<!--[if lt IE 9]>
    <script src="jquery-1.9.0.js"></script>
<![endif]-->
<!--[if gte IE 9]><!-->
    <script src="jquery-2.0.0.js"></script>
<!--<![endif]-->
Run Code Online (Sandbox Code Playgroud)


cgp*_*cgp 6

jQuery没有加载,这可能不是特定于IE8.检查jQuery包含的路径.声明.或者更好的是,将以下内容用于CDN:

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js">
</script>
Run Code Online (Sandbox Code Playgroud)

  • 一切都适用于firefox,safari和chrome.我可以说这个库正在下载,只是没有执行.我在jquery文件的行上设置了一个断点,并且它说没有与该行关联的可执行代码. (3认同)

lho*_*ess 6

如果您在站点上使用HTTPS,则需要从Googles https服务器加载jQuery库.试试这个:https: //ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js (或最新的https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/ jquery.min.js)


Hon*_*son 5

我是通过固定创建的模板还有谁忘了,包括文档类型.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Run Code Online (Sandbox Code Playgroud)

如果你没有声明doctype IE8在Quirks模式下做了奇怪的事情.