[英]Javascript only working in Firebug
我正在使用jQuery UI在页面上构建选项卡。 在添加以下代码之前,该方法效果很好。
$(function () {
$('#tabs').children("div").each(function (index) {
$('#tabs').tabs('load', index);
});
});
我正在尝试预加载标签。 有趣的是,如果我通过Firebug运行此程序并将断点放在那段代码中并逐步执行,则代码可以完美运行。 否则,将渲染选项卡,但不会显示选项卡中的内容。 这个问题使我发疯! 有人可以帮忙吗?
如果您查看jQuery UI源中的选项卡,问题会很快显示出来, 这就是调用该load
函数时发生的事情的开始 :
load: function(index) {
index = this._getIndex(index);
var self = this, o = this.options, a = this.anchors.eq(index)[0],
url = $.data(a, 'load.tabs');
this.abort(); //uh oh
当您在选项卡上调用load
时,它要做的第一件事就是杀死其他所有运行AJAX调用的选项卡 。 因此,如果您查看页面,它会预加载选项卡,但仅预加载最后一个选项卡,因为在快速循环中,每个选项卡都会杀死前一个选项卡的AJAX请求。
我认为您将需要重新查看整体操作方式,因为AJAX模型旨在从锚点加载( <div>
元素根本不存在)我不确定究竟如何您的标记看起来在这里。
但是,您有2个选择,您可以自己加载AJAX(更好的IMO), 也可以使用内置的但顺序执行的操作,如下所示:
$("#tabs").tabs({
load: function(event, ui) {
if(ui.index != $("#tabs a").length - 1) //not on the last tab
$(this).tabs('load', ui.index + 1); //load the next tab
}
}).tabs('load', 0); //kick off the first
我没有一个很好的环境来测试上面的内容,但是我们基本上使用的是load
事件 ,当一个选项卡完成加载时会触发该事件 ,然后启动下一个选项卡(因此我们永远不会在循环之前中止该事件)。 这是慢得多,因为我们正在做的串行和并行不要求......这是为什么表现,我建议你做的.load()
调用自己以外的任何.tabs()
提供。
非常简单的解决方案-如果您的源代码中包含任何console.log,则在Firefox中,如果Firebug关闭,则会破坏您的应用程序。
您可以做两件事:
toConsole: function( obj ) { console.log( obj ); }
遇到相同的问题(动态内容仅在Firebug中逐步运行时有效)。
问题是我正在加载xml内容,但未设置async
属性。
我的代码最初看起来像:
var xmlDoc = createDocument(); //createDocument() was a cross browser solution for creating xml
xmlDoc.load("file.xml");
将代码更改为:
var xmlDoc = createDocument();
xmlDoc.async = false;
xmlDoc.load("file.xml");
为我做了把戏。 谢谢!
不确定,但是这行对我来说很成问题:
$('#tabs').tabs('load', index);
我相信您将有多个标签,但您使用的是ID #tab
,每页每个元素应使用一次。 尝试为这些选项卡使用类:
$('.tabs').tabs('load', index);
加载的远程内容中是否正在使用任何控制台功能? 启用Firebug与不启用Firebug时,显而易见的一项更改是,将所有这些console。*函数添加到了全局对象中。 因此,例如,如果您有一条日志语句:
console.log("hello")
alert("world");
如果启用了Firebug,这只会警告“世界”,否则调用console.log
将引发ReferenceError
错误,并且随后的任何代码都不会运行,因此不会显示任何警告。
我可以想象到的另一种可能性与内容的异步加载有关。 设置断点时,它会在您等待断点时为正在加载的远程内容增加时间。 在您前进时,内容可能已加载,并且执行正常进行。 但是,当没有断点时,脚本将继续执行而不会停止,并且可能会中断。 当然,这仅仅是一个理论。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.