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

标签 javascript internet-explorer firefox

有什么方法可以检测当前页面是否来自后退按钮?

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

最佳答案

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

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

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

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

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

  • 需要加载DOM;并非所有现成的功能都有效。唯一的那个 下面是,JQuery 准备好了;然而 (function() { }) 在我的例子中没有。
  • 输入不能是类型="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>

关于javascript - 检测页面是否从后退按钮加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37838430/

相关文章:

javascript - 停止运行该脚本

html - <li> IE7 中的差距

firefox - 链接元素预取在 Firefox 3.6 中不起作用

css - SVG 定义的背景过滤器不会在 Safari/Chrome 上呈现

javascript - 如何制作响应窗口大小的图像列表 - CSS/JS/Bootstrap

javascript - 当 Socket.io 发出完成时运行函数

javascript - TypeScript 编译模块在自动调用函数之前声明 var

javascript - 用于在桌面应用程序中运行 javascript (D3) 的 QWebView - HTML 更改时重新加载缓慢

ajax - 使用 AJAX 时清除 IE 缓存,而不使用缓存清除查询字符串,但使用 http 响应 header

javascript - window.open 在 Firefox 55.0.1 上无法正常工作