jQuery UI选项卡动态AJAX错误IE7

时间:2012-12-03 20:54:37

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

我有一个页面,它使用具有静态和动态内容的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
  4. 在使用jQuery UI的cache: true选项和更改href函数中的标签load属性时都会发生这种情况,就像我一样。

    有没有人有类似的经历和/或知道我可能做错了导致这个?

    谢谢。我们非常感谢您的帮助。

1 个答案:

答案 0 :(得分: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 bug论坛,看看他们说了什么。如果是错误,我会尝试使用故障单更新此帖子。