Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML5历史API返回按钮_Javascript_Html5 History - Fatal编程技术网

Javascript HTML5历史API返回按钮

Javascript HTML5历史API返回按钮,javascript,html5-history,Javascript,Html5 History,我使用ajax调用来更新我页面的一部分,这是一个搜索功能。当我进行搜索时,我会更新url。示例:mysite.com/products变为mysite.com/products?search=blabla 但当我按下后退按钮时,只有url发生了变化,页面内容没有变化 这是我用来设置历史记录的函数: function setHistory(data, url) { var search = $("#Search").val(); url = url.replace('search_

我使用ajax调用来更新我页面的一部分,这是一个搜索功能。当我进行搜索时,我会更新url。示例:mysite.com/products变为mysite.com/products?search=blabla

但当我按下后退按钮时,只有url发生了变化,页面内容没有变化

这是我用来设置历史记录的函数:

function setHistory(data, url) {
    var search = $("#Search").val();
    url = url.replace('search_input', search);
    history.pushState(data, "", url);
}

数据
是页面上更改的内容,
url
是要推送到历史记录的新url。我做错什么了吗?如果我使用后退按钮,页面不应该自动更新吗?它在chrome和IE 10中都不起作用。

您需要监听
popstate
事件并将页面更改回原来的位置

addEventListener('popstate', function (event) {
    event.state; // this contains the state data from `pustState`. Use it to decide what to change the page back to.
}

另请参见,.

See@jalynn2-就我所知,它只是假装支持旧浏览器中的历史API,在用户返回时不会自动保存和恢复状态。@Quentin-是的,你是对的。我一直忘了,有些人很奢侈,只支持现代浏览器。我对使用历史API的旧浏览器的支持往往是“在这里,有一个常规链接,我将在服务器上构建页面”。这很有效。谢谢我还发现out window.onpopstate=function(event){…};同样有效。