如何在javascript中使用ajax处理历史记录?

时间:2012-03-10 10:24:59

标签: javascript ajax

我正在努力找到关于历史和/或哈希的好(和完整)文章,但无济于事。所有,我发现的,是关于图书馆的,但我想用我的双手写一个jjax历史。

我所知道的,我将使用历史api(没有数字(#)符号)。对于使用不支持历史记录api的浏览器的用户,我将放入<head>脚本,该脚本将重定向到:ex.com/adress1#/adress2到ex.com/adress2(这是针对F5)

你能帮帮我吗?

2 个答案:

答案 0 :(得分:0)

您在寻找这种解决方案吗?

$(".link").click(function() {
    window.location.hash = "param";
});
$(init);

function init() {
    ajax_page_handler();
    page_load($(window.location).attr("hash"));
}

function page_load($href) {
    if ($href != undefined && $href.substring(0, 1) == '#') {

        if ($href === "#param") {
            // load the relevant data
        }

        $('html, body').animate({
            scrollTop: 0
        }, 'slow'); // bonus
    }
}

function ajax_page_handler() {
    $(window).bind('hashchange', function() {
        $href = $(window.location).attr("hash");
        page_load($href);
    });
}​

答案 1 :(得分:0)

对于旧版浏览器,您可以使用此库:https://github.com/devote/HTML5-History-API它完全模拟旧浏览器中的历史记录。它不需要编写额外的/不必要的代码。