【问题标题】:jQuery Address / Deep Linking IssuejQuery 地址/深度链接问题
【发布时间】:2023-11-26 10:40:01
【问题描述】:

我目前正在开发的网站上有一个选项卡式部分,并且希望为每个选项卡启用唯一的 URL,并支持历史记录。

似乎 jQuery Address 插件是可行的方法,但我在实现它时遇到了麻烦。我能够分配 URL 并更改地址栏。后退按钮会遍历 URL,但实际上不会更改选项卡。

地址文档不是很好。我假设我缺少某种事件侦听器,但我不确定如何初始化它或将其应用于什么。

这是我的 JS

$('.sm-tab').click(function() {
    $.address.value($('a', this).attr('href'));
    smReset();
    $('#sm-tabs').find('.active').each(function() {
        $(this).removeClass('active');
        $(this).addClass('inactive');
    });
    $(this).removeClass('inactive');
    $(this).addClass('active');
    var smClassArray = $(this).attr('class').split(" ");
    var smDivClass = smClassArray[1];
    $('#'+smDivClass).show();
});

我的 HTML 看起来像这样

<div id="sm-tabs">
    <div class="sm-tab inactive twitter">
        <span class="twitter sprite-sm-twitter"><a href="?tab=twitter" class="hidetext">Twitter</a></span>
    </div>
    <div class="sm-tab inactive youtube">
        <span class="youtube sprite-sm-youtube"><a href="?tab=youtube" class="hidetext">YouTube</a></span>
    </div>
</div>

<div id="sm-widgets">
    <div id="twitter">
        Content
    </div>
    <div id="youtube">
        Content
    </div>
</div>

【问题讨论】:

标签: jquery plugins browser-history deep-linking jquery-address


【解决方案1】:

使用哈希值进行 ajax 导航会让您打开a whole can of worms

试试this deep-linking script,它使用 HTML5 History API。

【讨论】:

  • 我实际上需要完全避免使用哈希。我有一个 YouTube 身份验证重定向,当它返回我的页面时会覆盖和散列。我希望我可以在没有哈希的情况下让 Address 工作,但看起来这可能是不可能的?
  • 当然,使用提到的深度链接脚本,但不要包括history.html4.js,它是 HTML4 支持(也就是哈希值)。