检测页面是否从后退按钮加载

新手上路,请多包涵

有没有办法检测当前页面是否来自后退按钮?

仅当当前页面来自后退按钮时,我才想从 cookie 加载数据。

原文由 Valter 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 203
1 个回答

注意:据报道,这在最新版本的 Chrome 中不再有效。

当用户返回页面时,所有可见的表单数据都会被保留,同时所有 JavaScript 变量都会被重置。我说“可见”的表单数据,因为隐藏字段似乎没有被保留,但不可见的输入是。

您可以利用它来检测页面是否为初始加载,或者之前是否已加载(例如通过单击后退按钮)。

创建一个值为“0”的不可见输入字段(不是类型“hidden”),并在 DOM 就绪加载程序中检查该值是否已设置为“1”;如果您知道页面已经加载,例如通过后退按钮;如果它仍然是“0”,那么页面最初是第一次加载,将值设置为“1”。

注意:这在工作方式上有点微妙,可能不适用于所有浏览器;我在构建它时考虑到了 Chrome。

  • 需要加载 DOM;并非所有现成的功能都有效。下面的那个,JQuery 准备好了;但是 (function() { }) 在我的例子中没有。
  • 输入不能是 type=“hidden”。设置样式 =“显示:无;”而不是在输入上。

.

 <input id="backbuttonstate" type="text" value="0" style="display:none;" />
<script>
document.addEventListener('DOMContentLoaded', function () {
   var ibackbutton = document.getElementById("backbuttonstate");
   if (ibackbutton.value == "0") {
     // Page has been loaded for the first time - Set marker
     ibackbutton.value = "1";
     alert('First time load');
   } else {
     // Back button has been fired.. Do Something different..
     alert('Previously loaded - Returned from Back button');
   }
}, false);
</script>

原文由 Radderz 发布,翻译遵循 CC BY-SA 4.0 许可协议

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