javascript - 历史 pushstate 后退和前进功能
问题描述
我刚刚创建了一个网站,所有页面都使用 ajax 加载。现在我正在尝试使后退和前进浏览器按钮工作。后退按钮很简单,我所要做的就是:
$(window).on('popstate', function(e) {
get_page_content(location.href);
});
get_page_content()
单击链接时我用来获取和替换页面内容的功能在哪里。这就是我在里面使用 pushstate 的方式get_page_content()
:
window.history.pushState('', '', url);
他们的问题是每当我返回时,前进按钮不可用。如何使用前进按钮?
解决方案
我刚刚意识到我在window.history.pushState('', '', url);
里面get_page_content()
,然后每次onpopstate
触发事件时都会调用它,最终没有什么可继续的。我只是搬到pushState
外面,get_page_content()
一切正常。这是我目前拥有的:
$('body').on('click', 'a:not([href^="#"])', function(e) {
if ( this.host === window.location.host ) {
e.preventDefault()
get_page_content($(this).attr('href'));
window.history.pushState('', '', url);
}
});
$(window).on('popstate', function(e) {
get_page_content(location.href);
});
function get_page_content(url) {
// ...
}
推荐阅读
- jquery - AJAX 调用时变量丢失
- javascript - GoogleScript - setValues() - 连接数组内的数组元素
- arrays - 如何将数组中的数字与英文字母对应?
- laravel - Laravel-Package:如何解决发送电子邮件的合同类?
- javascript - 是否可以在 Konva.js 中测量当前的 FPS?
- javascript - 如何找到hcaptcha回调函数
- amazon-web-services - 自动启动 cloudformation 中创建的 DMS 复制任务
- python - Django如何从列表中删除发件人
- plotly - 有没有办法查看整个路径的痕迹?数据似乎只出现在两极
- javascript - Laravel - 根据选择选项显示数据库数据