Javascript IE6中的jQuery$(document).ready()失败

Javascript IE6中的jQuery$(document).ready()失败,javascript,jquery,internet-explorer-6,Javascript,Jquery,Internet Explorer 6,我有以下代码: // Creates a timer to check for elements popping into the dom timer = setInterval(function () { for (p in pixelTypes) { checkElems(pixelTypes[p]); }

我有以下代码:

// Creates a timer to check for elements popping into the dom            
timer = setInterval(function ()
{          
    for (p in pixelTypes)
    {                             
        checkElems(pixelTypes[p]);
    }                            
}, 10);

// Add Document finished callback.
$(document).ready(function ()
{         
    // Document is loaded, so stop trying to find new pixels
    clearInterval(timer); 
});       
在Firefox中,它工作得很好,但在IE6中,我在$(document).ready行中得到一个“objectexpected”错误

我不知道是什么原因导致IE6无法识别它,此时jquery已完全加载


这是一个已知的问题吗?

我认为您不应该像现在这样轮询元素


浏览器加载到足以让您操作页面时,document ready事件将立即调用,因此您应该在
$(document.ready()
块中执行DOM处理。

是否确实加载了jQuery?尝试使用以下警报进行调试:

alert(typeof $);
您也可以尝试不同的语法:

$(function() {
     clearInterval(timer); 
});


好的,从你的评论来看,以上这些都没有帮助。根据我的经验,“预期对象”错误似乎与语法错误一起出现。这就是你的密码吗?如果没有,您可以发布它吗?

您可以尝试使用旧的skool方法检查文档是否“准备就绪”。。。将脚本放在结束标记之前-我相信它与jQuery的“ready”事件具有相同的效果-实际上,这样做可能更快



根据我的经验,IE6中的“预期对象”错误是由于语法错误而出现的-但是,如果您还没有…,那么值得使用脚本…

我在我的机器上遇到了这个问题,因为我能够找到一个快速修复方法。以下是我所做的:

1.使用nickf的建议“alert(typeof$)”调试了我的javascript,并获得了“undefined”警报消息

2.然后我完全限定了我的jQuery脚本资源

3.重新加载我的页面并收到“功能”警报消息

顺便说一句,我正在XP上使用IIS5.1。我的网站配置为使用“通配符映射”获取asp.net mvc框架的建议。我认为这个配置导致了断开的链接

有关如何在旧版IIS上设置MVC的更多信息,请查看Phil Haack的帖子:
我过去也遇到过同样的问题。这是一个零散的问题,很难复制

我找到的解决方案是替换
$(document).ready(function(){…})jQuery(function(){…})
时,它就像一个魔咒一样工作

移动
$(文档).ready(函数(){…})到底部对我的用例不起作用

中的注释非常有用(我第一次读到这样做的地方)

$(document).ready()会告诉您dom何时准备好,但并非所有资产都必须准备好


如果要确保所有资产都已实际加载完毕,请改用$(window).load()。最常用的方法是确保图像加载完成,但它也可以解决脚本问题。

如果它位于身体元素内的脚本元素中,(即)

原因可能是您通过脚本标记传递的属性。如果是:

<script type="text/javascript">...</script>
。。。
IE6可能会给出一个错误。你应该使用

<script language="javascript">...</script> 
。。。

然后错误就消失了。

只要给感兴趣的人一些提示:

$(document).ready(函数(){…})
$(函数(){…})的意思完全相同。后者是前者的简写

如果您使用多个Javascript库为大型站点开发,或者开发与其他人工作兼容的插件,那么就不能相信美元符号($)与jQuery对象相关联。为了安全起见,请使用以下符号:

(function($) { [your code here] })(jQuery);
这将jQuery传递到一个自执行函数中,并将$与该函数中的jQuery对象关联。那么,在您的函数之外,$代表什么并不重要

为了回到您的问题,您是否检查了在出现错误时是否分配了计时器变量?我相信浏览器会看到
$(document).ready(function(){…})全部作为一行,因此如果您有某种调试器告诉您这是有问题的行,它可能是计时器变量

最后一件事:在Javascript中,将大括号放在新行上是不正确的。由于Javascripts分号插入,这可能会导致非常严重的错误。有关更多信息,请阅读道格拉斯·克罗克福德的《Javascript:The good parts:

不管怎样,我真的希望我没有让任何人难过。希望你能解决这个问题

编辑:我不确定这是否是robertz所说的完全限定的意思,但据我所知,当URL完全限定时,它意味着不缺少任何部分,即,它是一个以http://或https://开头的绝对URL(或其他协议)。
如果我错了,请纠正我

如果有人有同样的问题,你应该看看当你调用你的javascript时,你是否有
type=“application/javascript”
,我消除了它,并纠正了它,我认为这是IE和类型的问题,确保你的脚本类型是text/javascript

<script type='text/javascript'

我也遇到了同样的问题,脚本错误通知我对象未定义。我尝试了这里列出的所有建议,但没有结果。我唯一没有考虑的是安全性,我忘记了所有的表单验证,结果我忘记了脚本脚本的授权,这是拒绝访问jQuery库的!!!p>

希望这能有所帮助。

日期时间选择器在我的本地XP测试中工作得很好,但一旦部署到服务器上,它就“预期对象”失败了。经过2天的持久化,这就是我解决问题的方法,在Javascript路径周围添加Url.Content

<script src="<%= Url.Content("~/Scripts/jquery-1.4.1.min.js") %>" type="text/javascript"></script>

<script src="<%= Url.Content("~/Scripts/ui/minified/jquery.ui.core.min.js") %>" type="text/javascript"></script>  
<script src="<%= Url.Content("~/Scripts/ui/minified/jquery.ui.datepicker.min.js") %>" type="text/javascript"></script>


最好是使用存在问题的最小大小的完整HTML文件复制这些错误。我们不知道jQuery是否已完全加载,也不知道这段代码是在HTML头中还是在正文中,等等。在这种情况下,HTML不重要,这是一个脚本文件,它是由另一个脚本f动态注入的