使用浏览器后退按钮时,javascript窗口pushstate不起作用

时间:2018-12-28 13:32:25

标签: javascript jquery ajax browser-history

我通过ajax请求动态加载内容,并在发送请求后使用js history.pushState更新浏览器搜索栏。

在此js文件中,我也使用URLSearchParams从更新的url获取参数,因此刷新页面后,应该使用这些参数相应地加载内容。

更新内容的代码

    let searchParams = new URLSearchParams(window.location.search);
    let id = 0;
    let oc = false;

    if(searchParams.has("a") && searchParams.has("oc")){
        id = searchParams.get("a");
        oc = searchParams.get("oc");
    }

    getList(id, oc, "#forumContents");

使用ajax请求从php获取信息的getList函数:

       function getList(id, oc, p){

        $.ajax({

            method: 'json',
            url: "/action.php?method=json&p=getList&a="+forumID+"&oc="+openContent

        }).done(function(data) {
            data = JSON.parse(data);

            if(:something:){

                history.pushState("s", "", "?a="+forumID+"&oc="+openContent);
            }

搜索棒成功更新,但是浏览器后退按钮仅工作一次,第二次按下该按钮后页面不会更新,但是如果快速且足够次地按下浏览器后退按钮,它将同样起作用。

0 个答案:

没有答案