0

我有一个使用具有静态和动态内容的 jQuery UI 选项卡的页面。我正在尝试cache加载选项卡后的选项卡内容,因此如果用户关闭选项卡然后想要重新进入,我不必再次返回服务器,并且可以制作选项卡显示在选项卡列表的末尾。这在 FF、Chrome、Safari、Opera 以及 IE 8 和 9 中效果很好。但是,IE7 给我带来了麻烦。

这是我制作的一个jsFiddle ,它演示了这个问题。据我所知,这个问题似乎beforeLoad是即使在内容加载一次之后也调用了该函数。我知道我应该使用cache: true缓存选项,但是由于用户可以关闭选项卡然后尝试返回它,我认为这可能会更优雅一点。

要复制问题:

  1. 单击Dynamic 1按钮。将出现一个新选项卡Dyn 1,其中包含一些内容
  2. 离开选项卡(通过关闭它或单击其他选项卡)
  3. 单击返回Dyn 1选项卡。内容现在将显示unable to load dynamic tab

正如我所做的那样,在使用 jQuery UI 的cache: true选项和在函数中更改选项卡的href属性时都会发生这种情况。load

有没有人有过类似的经历和/或知道我可能做错了什么导致这种情况?

谢谢你。您的帮助总是值得赞赏的。

4

1 回答 1

1

我永远无法回答为什么会发生这种行为。但是,我确实找到了一个可行的解决方案。万一其他人碰巧遇到同样问题的这个答案,我就是这样解决的:

改变:

beforeLoad: function(evt, ui) {
    ui.jqXHR.error(function(jqXHR) {
        ui.panel.html('Unable to load application');
    });
}

至:

beforeLoad: function(evt, ui) {
    ui.jqXHR.error(function(jqXHR) {
        if(jqXHR.statusText !== 'canceled') {
            ui.panel.html('Unable to load application');
        }
    });
}

为什么beforeLoad即使发生cache: true或更改href选项卡的选项卡也会调用该方法,我仍然不确定。我将把它提交到 jQuery 错误论坛,看看他们怎么说。如果这是一个错误,我会尝试用票更新这篇文章。

于 2012-12-06T14:58:07.130 回答