有谁知道 jQueryUI 机制,它将 UI 的当前“状态”保存到 url,并可以从 url 重现该状态?
我在选项卡中有菜单,如下所示。(使用 jQuery UI 选项卡)。
<div class="tabsx">
<ul>
<li><a href="#tab1">First Tab</a></li>
<li><a href="#tab2">Second Tab</a></li>
</ul>
<div class="tab" id="tab1">
<select id=”s1a”><option …… </select>
<select id=”s1b”><option …… </select>
</div>
<div class="tab" id="tab2">
<select id=”s2a”><option …… </select>
</div>
</div>
如果我在一个选项卡中进行选择,单击到另一个选项卡,然后返回到前一个选项卡,则选择已被保留,当然。
但我想要的是让显示页面的每个可能的“状态”都可以通过 URL 引用。所以我希望将浏览器 URL 更改为:
Example.com/page/?s1a=foo&s2a=bar#tab1
当我查看选项卡 1 时,第一个菜单位于选项 'foo' 上,第二个菜单位于选项 'bar' 上。
而且,如果这个 URL 被输入到浏览器中,我希望 jQuery 显示相同的显示状态。
我已经为“激活”事件添加了一个功能,以便在单击每个选项卡时更改 URL。
$( ".tabsx" ).tabs({
activate: function( event, ui ) {
tab_href= ui.newTab.find('a').attr('href');
window.history.pushState(null,null,tab_href);
}
});
我为“create”事件添加了一个类似的处理程序,以便在页面加载时,将默认选项卡的哈希放入 url。(将“activate”替换为“create”,将“newTab”替换为“tab”)
这在 URL 中可以正常工作,例如:
Example.com/page/#tab2
激活第二个选项卡时,会出现在浏览器的 url 字段中。它可以加入书签,调用时,jQuery 将显示打开的第二个选项卡(标准行为)。
到目前为止,一切都很好。但现在我也想将选择的状态存储在 url 中。
我开始编码(解析查询参数、搜索选项列表等)。
但我想知道是否有一些明显的捷径可用。