如何使用ajax捕获后退按钮并刷新页面

时间:2015-06-19 00:08:57

标签: javascript jquery ajax

我有一个网页,可以逐步更新,因此我需要Windows"返回"按钮调用函数刷新数据而不返回页面。 我有第一部分工作我陷阱"回"按钮

window.onbeforeunload = confirmExit();

和confirmExit()

function confirmExit() {
    switch (page) {
        case 2:
            countries();
            break;
         case 3:
            counties(page3id)
            break;
        case 4:
            cities(page4id)
            break;
    }
}

哪一项都运行良好但在页面刷新后,后退按钮默认操作启动并加载上一页。我试过回真假。我将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:0)

您需要将虚拟网站添加到浏览器历史记录中。这样后退按钮就不会通往另一个网站。

使用history.pushState()添加虚拟网站。

  

假设http://mozilla.org/foo.html执行以下JavaScript:

var stateObj = { foo: "bar" }; 
history.pushState(stateObj, "page 2", "bar.html");
     

这将导致显示URL栏   http://mozilla.org/bar.html,但不会导致浏览器加载   bar.html甚至检查bar.html是否存在。

     

现在假设用户现在导航到http://google.com,然后   点击回来。此时,将显示URL栏   http://mozilla.org/bar.html,该页面将获得一个popstate事件   其状态对象包含stateObj的副本。页面本身会   看起来像foo.html,虽然页面可能会修改其内容   popstate事件。

     

如果我们再次点击返回,则网址将更改为   http://mozilla.org/foo.html,该文件将获得另一份文件   popstate事件,这次使用null状态对象。去吧   back不会改变文档的内容   上一步,虽然文档可能会更新其内容   收到popstate事件后手动。

来自MDN: Manipulating the browser history

用户现在可以按后退按钮添加虚拟网站的次数。要检测后退按钮,请使用window.onpopstate

  

popstate事件

     

每次活动时都会将popstate事件调度到窗口   历史条目变更。如果正在激活的历史记录条目是   通过调用pushState或受对replaceState的调用而产生的,   popstate事件的state属性包含历史记录的副本   条目的状态对象。

来自MDN: Manipulating the browser history