jQuery在IE8中的$(document).ready出现"object expected"错误

5
我在使用jquery命令$(document).ready()加载页面时,IE8会抛出“object expected”错误。我查看了SO上所有其他帖子,但似乎没有解决方法有效。

为了进行故障排除,我创建了以下html,Firefox和Chrome运行良好,但在$(document).ready行处产生“object expected”错误。我已经:

  1. 确认它正在访问google的jquery文件 - 并尝试引用本地jquery.js文件 - 结果相同。
  2. 尝试将脚本放置在中(我将其包含在正文中,以在我正在开发的网站上重新创建此情况)
  3. 还尝试过这种方式:jQuery(document)代替$ - 结果相同
  4. 尝试包含:var $j=jQuery.noConflict();并包含$j(document),在$j声明处得到'jQuery未定义'错误。

我错过了什么?非常感谢您的任何帮助!

<html>
<head>
    <script type="application/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js"></script>
</head>
<body>
    <script type="text/javascript">
        $(document).ready(function(){
    alert("WORKING!");
    });

</script>

<div id="test">
</div>
</body></html>

这不是你的问题,但只想提一下 $(function(){ ... })$(document).ready(function(){ ... }); 的简写形式。 - loganfsmyth
这与运行IE8并且损坏了.dll文件的计算机有关。您很可能可以使用另一台计算机来运行它,这样它就能正常工作了。 - Esailija
4
@Esailija说:我原本以为IE 8就是一个已经损坏的dll文件。/讽刺 - gen_Eric
2
嗯...在Firefox和Chrome中可以工作,所以链接应该没问题。除非IE不行...啊!脚本链接需要type="text/javascript"。现在可以工作了...谢谢! - skaclmbr
4个回答

9

伙计,检查一下你的两个脚本标签。其中一个说type="application/javascript",另一个说type="text/javascript"

把第一个改成type="text/javascript"就可以正常工作了。


即使忽略了那个脚本标签,它也不会产生这个错误。它会显示类似于“$未定义”之类的信息。在我的IE8中,它会显示:“属性'$'的值为null或undefined,不是函数对象”。 - Esailija
1
告诉你了! :) 在 jsfiddle 中测试并复制了这个。 - Alfabravo
操作系统/IE8确切版本是什么?我完全复制了他的代码,但出现了我提到的错误:P - Esailija
1
Win7企业版+IE8 8.0.7601.17514 - Alfabravo
@Esailija IE通常不会将application/javascript识别为javascript。 - Kevin B
1
@KevinB 是的,我知道。我在模板中使用这个技巧,因为带有定义不正确的类型的脚本标记会被忽略。 - Esailija

4

我曾经遇到相同的问题,为解决这个问题,我花了很多时间并尝试了很多方法,但都没有起作用。

但是这个方法可行:

检查你的jQuery脚本标签。如果它包含了type="text/javascript",像这样:

<script  type="text/javascript" src="~/scripts/jquery-1.9.0.js"></script>

然后将“text/javascript”替换为“javascript”

<script type="javascript" src="~/scripts/jquery-1.9.0.js"></script>

这个行为真的很奇怪,但是它确实有效。如果有人能给出一个好的解释,请在下面回答。

注意!这仅适用于IE8,不适用于Chrome或Firefox!


2

我也遇到了这个错误。

问题出在我很愚蠢:我在虚拟机中运行了Internet Explorer。这台机器没有访问互联网的权限,只能访问主机系统,在那里我运行了Web服务器。 因此,外部脚本引用当然无法解析。


0

这个东西帮助我替换了

type="text/javascript" 

进入

language="javascript"

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