究竟能否区分刷新页面以及重新打开页面?

PC项目,领导提了一需求,关闭页面则退出登录,再打开页面需要重新登录,但如果是刷新,则不退出登录。个人查资料以及实践,没找到好的办法,想知道,究竟有没有办法区分刷新页面以及重新打开页面?
备注:暂不考虑浏览器兼容性。

阅读 6.1k
3 个回答

可以通过判断 window.performance.navigation.type 来判断.
type 为 0: 表示页面通过点击链接,书签和表单提交,或者脚本操作,或者在url中直接输入地址打开;
type 为 1: 表示页面通过点击刷新页面按钮或Location.reload()方法打开;
type 为 2: 表示页面通过历史记录和前进后退访问打开;
type 为 255: 表示页面通过其他方式打开。
参考链接:PerformanceNavigation

不是有sessionStorage。。。

试试使用javascript的onbeforeunload()和onunload()两个事件来监听页面关闭和页面刷新。

页面加载时只执行onload
页面关闭时先执行onbeforeunload,最后onunload
页面刷新时先执行onbeforeunload,然后onunload,最后onload。
//页面关闭提示
window.onbeforeunload = function (event) {
    var event = event || window.event;
    if (event) {
        event.returnValue = "确定要关闭窗口吗?";
    }
    return '确定要关闭窗口吗?';
}

但是

使用onunload或onbeforeunload可以监听浏览器关闭事件,但是无法区分关闭与刷新。

你可以看看这篇 js 监听浏览器刷新还是关闭事件

参考:
捕获窗口关闭、刷新事件
JS要怎么监听页面刷新和关闭?
js监听浏览器离开页面操作
js 监听浏览器刷新还是关闭事件

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题