jQuery UI - “对象不支持属性或方法'选项卡'”IE7

时间:2012-12-06 09:24:40

标签: jquery jquery-ui internet-explorer internet-explorer-7

我有一个完美的网页,几乎在所有浏览器上都使用jQuery UI标签 - 它不适用于IE7。

我的所有代码都是由asp文件呈现的 - 包含数据,包含JavaScript和CSS,并且还有创建选项卡的代码。

我的第一个问题是,在IE7中,我在警告框中收到以下消息:

  

Internet Explorer无法打开Internet站点。

几个小时后,我找到了一种方法来解决这个问题,使用脚本标记的defer Attribute

现在,我收到以下错误:

  

对象不支持属性或方法'tabs'

当我检查jQuery和jQuery UI版本(看看它们是否被编码)时,我只得到了jQuery的结果。

我想,没有加载jQuery UI,或者在加载库之前执行创建选项卡的脚本,尽管它应该在文档就绪时执行。

有没有人面临同样的问题?

2 个答案:

答案 0 :(得分:4)

脚本标记加载jQuery UI依赖于jQuery脚本加载jQuery UI脚本之前已经运行的脚本标记中的JavaScript。如果在jQuery脚本标记上使用defer属性,则会引入竞争条件,最终可能会首先加载jQuery UI并失败(不将tabs添加到jQuery.fn)。因此,使用 tabs函数的代码在ready回调中并不重要。

您根本不需要使用defer,因此我建议不要使用defer并发布有关原始问题的问题,而不是尝试解决此问题,因为添加{{ 1}}不应该是它的解决方案。

如果您想继续使用defer,请删除您的jQuery UI脚本标记,然后将其放在页面底部,就在结束defer标记之前:

</body>

等待加载jQuery,然后加载jQuery UI脚本,然后触发你的代码。

当然,只需创建自己的脚本文件,其中包含jQuery和jQuery UI,然后使用<script> (function() { var waitingForUI = false; loadScripts(); function loadScripts() { if (window.jQuery && window.jQuery.fn.tabs) { // Both jQuery and jQuery UI are loaded. // ==> your code using `tabs` here <== } else { if (window.jQuery) { // jQuery is loaded but not jQuery UI, go get it // unless we've already started loading it if (!waitingForUI) { waitingForUI = true; jQuery.getScript("/your/path/to/jquery/ui"); } } setTimeout(loadScripts, 10); } } })(); </script> </body> 编写代码,并加载该文件。

答案 1 :(得分:-1)

我也有这个问题,我发现我保存了“jquery-ui.css”内容,而不是“jquery-ui.js”内容。
如果您使用的是正确的文件,请检查它?