JavaScript会检测历史记录

时间:2015-09-20 20:59:36

标签: javascript jquery html5-history

我有一个JavaScript函数加载非常惊人的页面。这是我的代码:

function getpage(url, write)
{
    document.title = 'Loading Page... Please Wait...';
    waitingDialog.show('Loading Page... Please Wait...');
    setTimeout(function(){
        $.get( url, function( response ) {
            var newDoc = document.open("text/html", "replace");
            newDoc.write(response);
            newDoc.close();
            if(write!=true)
            {
                window.history.pushState({"html":response.html,"pageTitle":response.pageTitle},"", url);
            }
            else
            {
                window.history.pushState({"html":response.html,"pageTitle":response.pageTitle},"", '/');
            }
        });
        $("html, body").animate({ scrollTop: 0 }, "fast");
    }, 10);
}

当用户点击我的在线购物网站上的产品时,它会显示加载模式。 并且用户的浏览器网址会动态地更改产品的链接。 但是当用户想要返回时,它无法正常工作。 我需要回顾历史和历史。 当用户想要前进或后退检测到后网址或转发网址时,请使用我的 getpage()功能加载此网址...

DEMO PAGE:https://shopnow.az/

2 个答案:

答案 0 :(得分:0)

尝试

window.onpopstate = function (event) { // change content };

当用户按下后退或前进按钮时,将触发此事件。

答案 1 :(得分:-1)

尝试此功能:

function getpage(url, write) 
{
    document.title = 'Loading Page... Please Wait...';
    waitingDialog.show('Loading Page... Please Wait...');

    var flag = false;

    window.res = null;

    $.ajax({
        url: url,
        type: 'get'
    }).done(function(response) {
        flag = true;
        window.res = response;
    });

    myInterval = setInterval(function() {

        if(flag)
        {
            var newDoc = document.open("text/html", "replace");

            newDoc.write(window.res);
            newDoc.close();

            if (write != true) {
                window.history.pushState({"html": window.res.html, "pageTitle": window.res.pageTitle}, "", url);
            }
            else {
                window.history.pushState({"html": window.res.html, "pageTitle": window.res.pageTitle}, "", '/');
            }

            $("html, body").animate({scrollTop: 0}, "fast");

            clearInterval(myInterval);
        }

    },100);

}