78

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

$(function(){})永远不会被调用。相反,我得到一个错误Object expected。我打开开发人员并typeof $在控制台中运行,结果显示为undefined.

我曾尝试访问我知道使用 jQuery (jquery.com) 的其他网站,这些网站都可以正常工作,这里有什么我可能遗漏的吗?

4

20 回答 20

42

定义变量时,在变量之前写上“var”。当没有“var”时,IE8 会死掉。

于 2010-05-06T17:32:40.323 回答
39

更正:

检查您的脚本包含标签,是否使用

type="application/javascript" src="/path/to/jquery" 

改成

type="text/javascript" src="/path/to/jquery" 
于 2010-12-15T11:05:45.247 回答
38

我遇到了类似的问题。在 IE7 兼容模式下运行的 IE6、Firefox 和 IE8 中工作正常;但不是在“正常”的 IE8 中。我的解决方案是将此代码放在标题中

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 

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

于 2009-10-15T01:29:53.537 回答
12

解决方案是升级到最新版本的 jQuery。我遇到了完全相同的问题并升级到 1.4.2 并且在 IE8 中一切正常。

似乎与我所做的所有 jQuery 1.3.2 东西完全向后兼容,所以这里没有抱怨!

于 2010-06-11T08:13:11.227 回答
10

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

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

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

于 2010-11-19T12:49:10.897 回答
8

Some people stumbling on this post might get this issue with jquery and IE8 because they're using >= jQuery v2. Use this code:

<!--[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]-->
于 2014-08-27T23:48:14.383 回答
6

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

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js">
</script>
于 2009-05-18T18:43:01.460 回答
6

如果您在站点上使用 HTTPS,则需要从 Google 的 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 )

于 2011-04-26T19:31:33.490 回答
5

我正在修复一个忘记包含文档类型的其他人创建的模板。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

如果您不声明doctype IE8在 Quirks 模式下会发生奇怪的事情。

于 2010-12-07T05:00:33.077 回答
4

引发错误Object expected是因为未加载 Jquery。这是因为浏览器安全性(通常是 IE)不允许您执行外部 javascript 源代码。您可以通过以下方式纠正此问题:

或者

  • 2:将jquery源代码复制粘贴到您的网页中,这样它就不会被视为外部脚本。

我更喜欢第一个解决方案。

于 2011-08-17T09:19:12.850 回答
4

onload 事件在IE7/8中并不总是有效<head> ... </head>

您可以通过在页面末尾的标签之前添加一个 onload 脚本来强制它,如下所示。

  <script>
    window.onload();
  </script>
</body>
于 2010-10-21T12:24:41.373 回答
2

这解决了我在 IE8 中的问题:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>

在本地主机上运行,​​我不得不将https://更改为http://

如果我尝试浏览到安全链接,我会收到Internet Explorer 无法显示网页 友好警告。

如果出现问题,请务必先尝试在浏览器中加载文本脚本!

于 2011-05-01T22:33:52.513 回答
2

也许您插入两个脚本,它应该可以工作。

<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE8.js"></script>  
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js">/script> 
于 2010-09-16T07:17:22.417 回答
2

我有同样的问题。

我解决了它验证 IE8 没有正确配置以访问 SRC URL。

我改变了这个,它工作正常。

于 2009-08-05T14:07:44.273 回答
1

我遇到过同样的问题。解决方案是将 JQuery 文件的链接添加为 IE 中的受信任站点。

于 2010-10-13T14:54:28.533 回答
1

也许您打开了inPrivate Filtering ?

于 2009-05-18T18:54:40.207 回答
1

我认为你和我有同样的问题:

Message: Permission denied
Line: 13
Char: 27021
Code: 0
URI: http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.3.2.min.js

因为跨域引用。尝试在同一域上托管 jquery.js。

于 2011-04-18T13:49:45.950 回答
0

好的!我知道 jQuery 正在加载。我知道jQuery.textshadow.js正在加载。我可以在开发者工具中找到这两个脚本。

奇怪的部分:此代码在内容区域中有效,但在横幅中无效。甚至有专门的fixIE.css. 并且当我将 css 内联时它可以工作。(当然,这会弄乱 FireFox。)

我什至在横幅中的文本字段周围放置了一个有条件的 IE 跨度,但没有运气。

jquery-1.4.2.min.js我发现没有区别,并且在和中都有相同的错误jquery-1.2.6.min.jsjquery.textshadow.js在尝试找到解决此问题的方法时从 jQuery 站点下载。

这没有发布到网站上

于 2010-05-08T14:09:23.333 回答
0

简而言之,是因为IE8的解析引擎。

猜猜为什么微软在使用新的 HTML5 标记(如“section”)时也遇到了麻烦?这是因为 MS 决定他们不会像世界其他地方那样使用常规的 XML 解析。是的,没错——他们对 XML 进行了大量宣传,但最终,他们依靠“愚蠢”的解析引擎寻找“已知标签”,并在新事物出现时搞砸了。

IE8 和带有“load”、“get”和“post”的 jquery 问题也是如此。再次,微软决定在版本 8 中“走自己的路”。希望他们在 IE9 中解决(d)这个问题,目前唯一的选择是使用<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />.

哦,好吧......微软让我们再次在论坛上发布内容真是令人惊讶。;)

于 2011-03-12T08:34:27.737 回答
0

就我而言,解决方案是从您尝试访问的 URL 中取出任何特殊字符。我有一个波浪号 (~) 和一个百分比符号, $.get() 调用默默地失败了。

于 2012-08-17T11:10:25.390 回答