我有以下代码:
// 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完全被这一点加载.
这是一个已知的问题?
对于任何有兴趣的人来说,只需几点:
$(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.如果我错了请纠正我!
我过去也遇到过同样的问题.这是一个零星的问题,很可怕并且重现.
我找到的解决方案是替换$(document).ready(function() {...});
它jQuery(function() {...})
,它就像一个魅力!
移到$(document).ready(function() {...});
底部对我的用例不起作用.
这篇文章中的评论非常有用(我第一次读到这样做的方式)