jQueryUI-“;对象没有';t支持属性或方法';标签'&引用;IE7
我有一个可以在几乎所有浏览器上使用jQueryUI选项卡的完美工作网页——它在IE7上不起作用 我所有的代码都是由asp文件呈现的——包括数据、JavaScript和CSS,还有创建选项卡的代码 我的第一个问题是,在IE7中,我在警报框中得到了以下消息: Internet Explorer无法打开Internet站点 几个小时后,我找到了一种使用script标记修复此问题的方法 现在,我得到以下错误: 对象不支持属性或方法“选项卡” 当我检查jQuery和jQueryUI版本(以查看它们是否存在)时,我只得到jQuery的结果 我假设jqueryui没有加载,或者创建选项卡的脚本在加载库之前执行,尽管它应该在文档就绪时执行jQueryUI-“;对象没有';t支持属性或方法';标签'&引用;IE7,jquery,jquery-ui,internet-explorer,internet-explorer-7,Jquery,Jquery Ui,Internet Explorer,Internet Explorer 7,我有一个可以在几乎所有浏览器上使用jQueryUI选项卡的完美工作网页——它在IE7上不起作用 我所有的代码都是由asp文件呈现的——包括数据、JavaScript和CSS,还有创建选项卡的代码 我的第一个问题是,在IE7中,我在警报框中得到了以下消息: Internet Explorer无法打开Internet站点 几个小时后,我找到了一种使用script标记修复此问题的方法 现在,我得到以下错误: 对象不支持属性或方法“选项卡” 当我检查jQuery和jQueryUI版本(以查看它们是否存在
有人面临同样的问题吗?加载jQuery UI的脚本标记依赖于jQuery脚本标记中的JavaScript,该JavaScript在加载jQuery UI脚本之前已经运行。如果在jQuery脚本标记上使用
defer
属性,则会引入竞争条件,最终可能导致jQuery UI首先加载并失败(没有将选项卡添加到jQuery.fn
)。因此,使用tabs
函数的代码是否处于ready
回调中并不重要
您根本不需要使用defer
,因此我建议不要使用defer
并发布有关原始问题的问题,因为添加defer
不应该是解决问题的方法
但是,如果您想继续使用defer
,请删除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>
(功能(){
var waitingForUI=false;
loadScripts();
函数loadScripts(){
if(window.jQuery&&window.jQuery.fn.tabs){
//jQuery和jQuery UI都已加载。
//==>您在这里使用'tabs'的代码我也遇到了这个问题,我发现我保存了“jqueryui.css”内容而不是“jqueryui.js”内容。
检查您是否使用了正确的文件?if(window.jQuery){jQuery.getScript('/your/path/to/jQuery/ui');}
=DThanks获取删除“defer”标记并关注实际问题的建议。我终于找到了它-在$(文档)外部调用的JavaScript函数.ready函数。@gotqn:好了,很高兴你把它整理好了!这与其说是答案,不如说是评论