HTML5历史记录-返回上一个完整页面按钮
HTML5 History - Back button to previous full page?
我正在使用HTML5历史API修改URL,因为选择了某些产品属性(例如绿色汽车、蓝色汽车),以允许深度链接共享。
然而,这不是一个单页应用程序,所以我不想劫持用户的后退按钮:如果他们按下后退按钮,我想允许他们转到上一页,而不是上一个汽车颜色。
实现这一目标的最佳方式是什么?
示例历史:
/page1
/page2
/page2?color=green
/page2?color=red
/page2?color=blue
然后按下浏览器的后退按钮返回/page1
看起来我应该使用
history.replaceState();
而不是CCD_ 2。它替换了浏览器的URL,但没有添加到历史对象中,所以后退按钮可以按我的意愿工作
history.replaceState()的操作与history.pushState()完全相同,不同之处在于replaceState[()]修改当前历史记录条目,而不是创建新的条目。
developer.mozilla.org
这里有一个使用sessionStorage的解决方案,它使您的应用程序能够转到以前存储的页面,而不会破坏可用性预期/浏览器返回按钮功能。移动到以前的URL(例如不同的颜色)是用户使用浏览器上的后退按钮的预期结果。
JS
function getCurrentPath() {
return sessionStorage.getItem("currentPath");
}
function getPreviousPath() {
return sessionStorage.getItem("previousPath");
}
function setCurrentPath(path) {
var currentPath = getCurrentPath();
if (currentPath != path) {
sessionStorage.setItem("previousPath", currentPath);
sessionStorage.setItem("currentPath", path);
} else {
console.log('Path has not changed: ' + path);
}
}
function goToPrevious() {
var previousPath = getPreviousPath();
if (previousPath && previousPath != 'null') {
window.location.href = previousPath;
} else {
alert('Previous page is not defined.');
}
}
test1.html
<!DOCTYPE html>
<html>
<head>
<title>Test 1</title>
<meta charset="UTF-8">
<script src="test.js"></script>
<script>
setCurrentPath('test1.html');
console.log('Current Path:', getCurrentPath());
console.log('Previous Path:', getPreviousPath());
</script>
</head>
<body>
<button onclick="goToPrevious();">Go to previous page</button>
<a href="test2.html">Test 2</a>
<a href="?color=red">Red</a>
<a href="?color=green">Green</a>
<a href="?color=blue">Blue</a>
</body>
</html>
test2.html
<!DOCTYPE html>
<html>
<head>
<title>Test 2</title>
<meta charset="UTF-8">
<script src="test.js"></script>
<script>
setCurrentPath('test2.html');
console.log('Current Path:', getCurrentPath());
console.log('Previous Path:', getPreviousPath());
</script>
</head>
<body>
<button onclick="goToPrevious();">Go to previous page</button>
<a href="test1.html">Test 1</a>
<a href="?color=red">Red</a>
<a href="?color=green">Green</a>
<a href="?color=blue">Blue</a>
</body>
</html>
您可以看到,这允许用户更改查询字符串参数,但这不会影响您通过转发操作移动到上一页的功能,只需存储路径之间的更改即可。您可以使用一个数组来扩展它,而不是像我在这里所做的那样简单地使用两个值,但如果您希望这样做,我将把它留给实现
相关文章:
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- 禁用旋转木马中的下一个按钮和上一个按钮
- 如何在用户返回和上一个按钮时刷新下拉列表
- 简单的垂直上一个和下一个按钮代码点击上下移动jQuery
- HTML5历史记录-返回上一个完整页面按钮
- 当我单击下一个或上一个按钮时,datatable显示旧值
- 如何在一个onclick按钮上使用一个javascript函数选择多个文本字段
- 为缩略图库和较大图像库添加下一个和上一个按钮
- 当滑块只有一个图像时,如何禁用下一个/上一个按钮
- 图像缩略图库中的“下一个”和“上一个”按钮中的“问题”
- 如何在同一页面上的多个按钮上打开一个引导模式
- 如何在猫头鹰旋转木马中滑动所有可见项目,而不是使用上一个/下一个按钮
- 将“下一步”和“上一个”按钮添加到较大的图像
- 如何为滑块的分页按钮创建简单的下一个和上一个触发器按钮
- jQuery UI 选项卡 - 将参数设置为下一个/上一个按钮单击
- 单击上一个或继续按钮时更改选项卡样式
- 将下一个和上一个按钮添加到我的图像滑块
- JQuery,引导导航 - 如何添加上一个/下一个按钮
- 如何在cycle2.js中悬停img时同时显示上一个/下一个按钮
- & # 39;回# 39;按钮上一个模态弹出(Ajax模态弹出扩展器)