Heim > Fragen und Antworten > Hauptteil
想实现页面返回上一层,就能返回最后离开时候得到状态,包括样式一系列的,页面上没有返回上一层的btn,感觉很难实现!网上都说用hash,cookie,storage我感觉都不靠谱,根本没法取得页面是跳转过来的还是返回回来的,求大神指导!
过去多啦不再A梦2017-05-16 13:10:10
现在我有2个页面:页面A和页面B
页面B
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<button type="" onclick='back()'>返回A页</button>
<script>
function back() {
window.history.go(-1);
}
sessionStorage.setItem('info', 'true'); //值必须为字符串
</script>
</body>
</html>
页面A
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<a href="B.html">跳转到B页面</a>
<script src="https://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
<script>
var flag = sessionStorage.getItem('info'); // IE不支持本地文件
if (flag === 'true') {
$('<span class="back-succeed">返回成功</span>').appendTo('body'); //如果是从其他页面返回本页,添加提示
console.log('页面是从B页返回的');
sessionStorage.removeItem('info');
} else {
console.log('页面是新进入的');
}
</script>
</body>
</html>
流程:
1、从页面A进入页面B
2、页面B我们设置了一个info==='true'的sessionStorage
3、页面B通过按钮调用函数back()执行window.history.go(-1)返回了页面A
4、回到页面A后我们取得info并赋值给flag,判断flag==='true'就表示是从页面B返回的,并清除info的值,如果在页面A刷新,那么info已经被清除了,会输出:页面是新进入的。
5、如果一开始就直接打开页面A,此时没进入页面B,info也是不存在的,会输出:页面是新进入的
复制A和B页面的内容可自己测试- -