当前位置:  开发笔记 > 编程语言 > 正文

在IE6中jQuery $(document).ready()失败

如何解决《在IE6中jQuery$(document).ready()失败》经验,为你挑选了2个好方法。

我有以下代码:

// 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行上遇到"Object Expected"错误.

我无法弄清楚是什么原因导致IE6无法识别它,jquery完全被这一点加载.

这是一个已知的问题?



1> Adrian Schmi..:

对于任何有兴趣的人来说,只需几点:

$(document).ready(function() {...});并且$(function() {...});意味着完全相同的事情.后者是前者的简写.

如果您为大型站点开发,使用多个Javascript库,或者您开发的插件旨在与其他人的工作兼容,则您不能相信与jQuery对象关联的美元符号($).使用以下符号是安全的:

(function($) { [your code here] })(jQuery);

这将jQuery传递给自执行函数,并将$与此函数中的jQuery对象相关联.那么$在你的函数之外代表什么并不重要.

要回到您的问题,您是否在收到错误时检查了是否已分配计时器变量?我相信浏览器会将$(document).ready(function() {...});all视为一行,所以如果你有某种调试器告诉你这是违规行,那么它可能是timer变量......

最后一件事:在Javascript中,在新行上放置大括号是不正确的.由于Javascripts分号插入,这可能会导致非常糟糕的错误.有关详细信息,请阅读Douglas Crockford的Javascript:好的部分:

http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742/ref=sr_1_1?ie=UTF8&s=books&qid=1267108736&sr=1-1

无论如何,真的希望我没有让任何人感到不安.希望你解决问题!

编辑:我不确定这是罗伯茨完全合格的意思,但据我所知,当URL完全合格时,意味着没有任何部分缺失,即.它是以http://或https://(或其他一些协议)开头的绝对URL.如果我错了请纠正我!



2> Colin Harrin..:

我过去也遇到过同样的问题.这是一个零星的问题,很可怕并且重现.

我找到的解决方案是替换$(document).ready(function() {...});jQuery(function() {...}),它就像一个魅力!

移到$(document).ready(function() {...});底部对我的用例不起作用.

这篇文章中的评论非常有用(我第一次读到这样做的方式)

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有