jQueryUI的.tabs与Apache Rewrite发生冲突

时间:2013-04-21 16:54:28

标签: jquery-ui mod-rewrite

我有一个Apache编写,除了在使用'tabs'的页面之外,它可以在任何地方使用。

出于某种原因,选项卡正在加载,好像它们是通过AJAX加载的完整页面一样(通过index.php作为重写指示运行 - 但它不应该重写一个我认为的#锚链接...)

有没有办法可以阻止它这样做?这很奇怪,因为不仅将#link视为真实的URL,而是通过内联样式<html> 添加-33,000px,所以这就是它看起来像我在检查工具中禁用它。否则它只是黑色而且非常长。

enter image description here

我应该补充一点,这不是问题,直到我添加<base href="/folder/">来修复它没有正确重写子目录的问题。 之前,它仍然进行了重写并正确呈现了页面。

更新 这肯定是<base>和jQueryUI的.tabs冲突。当我删除重写并使用长URL时,它会不断克隆它们。重写使其保留了大约重写12次左右。

3 个答案:

答案 0 :(得分:1)

mod_rewrite也会查看片段标识符,但您可以在RewriteCond中告诉它。

以下仅允许不以片段标识符结尾的URI。

RewriteCond %{REQUEST_URI} !(#(.*))$

答案 1 :(得分:1)

感谢this错误报告,我找到了解决方案。

$.fn.__tabs = $.fn.tabs;
$.fn.tabs = function (a, b, c, d, e, f) {
    var base = location.href.replace(/#.*$/, '');
    $('ul>li>a[href^="#"]', this).each(function () {
        var href = $(this).attr('href');
        $(this).attr('href', base + href);
    });
    $(this).__tabs(a, b, c, d, e, f);
};

    //$('#the-object').tabs();

显然在1.8它工作,在1.9它循环。这会将基本href添加到链接,从而解决问题。

答案 2 :(得分:0)

显然这部分是由于jQueryUI标签中的错误

The Bug Report

我不确定我能否解决这个问题,但它在IE中工作,而不是在Chrome / Firefox中...猜猜我会尝试使用插件。