[英]jQuery issue in Internet Explorer 8
我试图让我的jQuery函数在IE8上工作。 我正在从Google的服务器加载库( http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js )。
永远不会调用$(function(){})
。 相反,我得到一个Object expected
的错误Object expected
。 我打开了开发人员并在控制台中运行了typeof $
,它出现了undefined
。
我试过去其他我知道使用jQuery(jquery.com)的网站,那些都有用,有什么我可能会在这里缺少的吗?
在定义变量之前,在变量之前写下“var”。 IE8在没有“var”时死亡。
更正:
检查您的脚本包含标记,是否正在使用
type="application/javascript" src="/path/to/jquery"
改成
type="text/javascript" src="/path/to/jquery"
我遇到了类似的问题。 在IE7,Firefox和IE8中运行的东西在IE7兼容模式下运行; 但不是'正常'的IE8。 我的解决方案是将此代码放在标题中
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
至于为什么jquery不能在IE8中工作,我不清楚。
解决方案是升级到最新版本的jQuery。 我有完全相同的问题,并升级到1.4.2,它在IE8中再次正常工作。
似乎完全向后兼容我所做的所有jQuery 1.3.2的东西,所以没有投诉!
我遇到了这个问题并尝试了这里提到的解决方案但没有成功。
最后,我意识到我使用http URL
链接到脚本的Google CDN版本,而嵌入脚本的页面是https page
。
这导致IE无法加载jquery(它会提示用户是否只想加载安全内容)。 更改Google CDN URL以使用https方案为我解决了问题。
有些人在这篇文章上磕磕绊绊可能会在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]-->
如果您在站点上使用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 )
jQuery没有加载,这可能不是特定于IE8。 检查jQuery包含的路径。 声明。 或者更好的是,将以下内容用于CDN:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js">
</script>
我被固定由其他人谁忘了,包括文档类型创建的模板。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
如果你没有声明doctype
IE8在Quirks模式下做了奇怪的事情。
onload事件并不总是在<head> ... </head>
IE7 / 8上工作
您可以通过在标记之前的页面末尾添加onload脚本来强制它,如下所示。
<script>
window.onload();
</script>
</body>
我遇到了同样的问题。
我解决了它验证IE8没有正确配置到达SRC URL。
我改变了这个,它运作正常。
也许你插入两个脚本,它应该是工作。
<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>
这解决了我在IE8中的问题:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
在localhost上运行,我不得不将https://更改为http://
如果我尝试浏览到安全链接,我得到的Internet Explorer无法显示网页友好警告。
如果有问题,请务必先在浏览器中加载文本脚本!
我遇到过同样的问题。 解决方案是将链接添加到JQuery文件中作为IE中的可信站点。
我认为你和我有同样的问题:
Message: Permission denied
Line: 13
Char: 27021
Code: 0
URI: http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.3.2.min.js
因为跨域引用。 尝试在同一个域上托管jquery.js。
也许你已经开启了私人过滤 ?
在我的情况下,解决方案是从您尝试访问的URL中取出任何特殊字符。 我有一个波浪号(〜)和一个百分比符号,$ .get()调用无声地失败。
好! 我知道jQuery正在加载。 我知道jQuery.textshadow.js
正在加载。 我可以在Developer Tools中找到这两个脚本。
奇怪的部分:此代码在内容区域中工作,但不在横幅中。 即使有专门的fixIE.css
。 并且当我把css内联时它工作。 (那当然会弄乱FireFox。)
我甚至在横幅中的文本字段中放入了条件IE浏览器,没有运气。
我发现没有区别,并且在jquery-1.4.2.min.js
和jquery-1.2.6.min.js
中都有相同的错误。 jquery.textshadow.js
是从jQuery网站下载的,同时试图找到这个问题的解决方案。
这不会发布到网站上
简而言之,这是因为IE8解析引擎。
猜猜为什么微软也难以使用新的HTML5标签(如“部分”)? 这是因为MS决定他们不会像世界其他地方那样使用常规的XML解析。 是的,这是对的 - 他们对XML进行了大量的宣传,但最终,他们又回到了一个“愚蠢”的解析引擎,寻找“已知标签”并在出现新事物时弄乱了东西。
IE8和jquery问题同样适用于“load”,“get”和“post”。 再次,微软决定用版本8“走自己的路”。希望他们在IE9中解决这个问题,唯一的当前选择是使用<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
回归IE7解析<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
。
哦......好吧,微软让我们再次在论坛上发布了一些内容。 ;)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.