【发布时间】:2011-11-02 23:04:18
【问题描述】:
这似乎是一个容易解决的问题,但它让我很头疼。
以下简单示例在 IE9 中产生错误。我使用 IE9 的开发者页面来监控网络加载,看起来 IE 在加载/评估包含的 javascript 之前加载并执行主体脚本。
我已经尝试了通过搜索答案找到的所有各种技巧,包括添加 <meta charset="UTF-8" /> 和 <meta http-equiv="x-ua-compatible" content="IE8"/>
<html>
<head>
<title>Demo of IE suckiness</title>
<script type='text/javascript'
src='http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js'></script>
</head>
<body>
This works in every browser but not IE9. IE gives the error:
<pre>
Line: 9
Error: The value of the property '$' is null or undefined, not a Function object
</pre>
<script type="text/javascript" defer="defer">
$(document).ready(function(){
alert("Must not be IE");
});
</script>
</body>
</html>
我有一个变通办法。将准备好的脚本移动到<body onload="ready()">,但我不敢相信这对 IE9 来说是坏的,我一定是做错了什么,只是看不到它。
【问题讨论】:
-
你为什么使用“延迟”? $(document).ready 表示将在文档加载时执行。
-
你能验证 jquery 库正在下载吗?也许ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js 因某种原因被屏蔽了。
-
我确认它正在被下载。问题是在运行页面脚本之前它没有被加载。 “延迟”是让它不首先加载的疯狂尝试。我只是没有意义。下面的解决方案是重置我的所有 IE 设置。我必须更改安全设置或什么? IE 会下载但不加载 JQuery 是没有意义的。
标签: jquery internet-explorer internet-explorer-9