管理历史记录时阻止浏览器网址更改

时间:2014-05-25 16:26:31

标签: jquery ajax asp.net-mvc browser-history

通常,当我们使用ajax从一个部分移动到另一个部分时,不会保存历史记录,这就是我们无法单击浏览器后退按钮的原因。我以表格格式显示数据并显示寻呼机链接,以便用户可以查看下一组数据,但最初的历史记录未被管理。我通过一个教程和实现来强制保存历史记录,这是由js库强制保存的jquery.ba-bbq.min.js这种方式

$(window).trigger('hashchange');

when people click on back/forward button then haschange function is firing

$(window).bind('hashchange', function (e) {
    var searchTerm = '';
    var pageIndex = e.getState("pageIndex") || 0;
    pageIndex = parseInt(pageIndex);
    searchTerm = e.getState("keyword") || '';
    if (searchTerm != null && searchTerm != '') {
        $("input[id*='txtSearch']").val(searchTerm);
        block();
        Search(searchTerm, pageIndex);
    }
});

这样,当用户点击寻呼机链接时,调用setHistory()强制将数据插入历史记录

calling setHistory(1, SearchTerm);

    function setHistory(pageIndex, SearchTerm) {
        $.bbq.pushState({ pageIndex: pageIndex, keyword: SearchTerm });
    }

我的代码工作正常,问题是在浏览器地址栏中更改了url。 所以我想知道有没有办法维护历史而不更改地址栏中的网址?

如果可能的话,指导我如何做到这一点,或者也可以指定另一个将保留历史但不会更改地址的库。感谢

1 个答案:

答案 0 :(得分:1)

如果您希望能够使用“后退”按钮,则不会。 在进行页面加载或更改位置哈希时会存储历史记录。