javascript - 区分F5还是浏览器打开

标签 javascript browser

浏览器是否可以区分F5或打开(点击链接、在空白页面或新选项卡中粘贴URL等)?

为什么?因为我想改进用户界面的人体工程学。在我的应用程序中,一些昂贵的计算用于渲染页面。因此页面被缓存,并且页面上有一个附加按钮“重新计算”。

当存在完全相同的标准“F5”按钮时,我不喜欢有额外的“重新计算”按钮。

我控制服务器和客户端 JS,有什么方法可以收到有关“F5”事件的通知吗?

检测所有“F5”事件并且不要错过它非常重要。但有时(有时但不经常)出现额外的错误“F5”事件是可以的 - 当打开页面被错误地检测为“F5”时。

最佳答案

就您而言,使用 sessionStorage 听起来是您的最佳选择。

类似于:

var calculatedValues = (function() {
  var savedValues = sessionStorage.getItem("values");
  if (!savedValues) {
    // Do calculations
    var values = {
      result: 10
    };

    savedValues = JSON.stringify(values);
    sessionStorage.setItem("values", savedValues);
  }
  return JSON.parse(savedValues);
}());

sessionStorage 对于每个窗口应该是唯一的 - 转到不同窗口下的页面将看不到任何值并重新计算,但按 F5 则不会。

在链接上使用在新选项卡中打开时,某些浏览器将 session 值从一个窗口复制到另一个窗口,但听起来这不会成为问题本案。

关于javascript - 区分F5还是浏览器打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23164888/

相关文章:

JavaScript对象比较: equal vs strict equal

google-chrome - Chrome 加载一个 text/html 文件,但显示状态 "failed"并且不会在屏幕上呈现

javascript - Xbox One 浏览器的 Web 开发指南

html - CSS3 奇怪的渲染行为

javascript - Chrome Extension/Javascript-检测 Chrome 浏览器中的用户语言

javascript - 功能失调的 jQuery 函数在 Chrome 控制台中没有任何线索

javascript - 如何解析逗号后的3位 float ?

javascript - 使用相对路径从子域到主域进行 AJAX 调用

javascript - Angular JS是否支持在同一页面上路由多个 View

javascript - 恶意软件将代码注入(inject)我的 Dojo/WebSocket 应用程序 : how prevent?