区分F5或打开浏览器

时间:2014-04-19 01:53:12

标签: javascript browser

是否可以区分F5或Open(点击链接,在空白页面中粘贴URL或新标签页等)?

为什么呢?因为我想改善用户界面的人体工程学。在我的应用程序中,一些昂贵的计算用于呈现页面。因此页面被缓存,并且“重新计算”页面上还有其他按钮。

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

我控制服务器和放大器客户端JS,有没有办法收到有关“F5”事件的通知?

检测所有“F5”事件非常重要,不要错过。但有时(有时但不经常)有额外的错误“F5”事件是可以的 - 当Open Page被错误地检测为“F5”时。

2 个答案:

答案 0 :(得分:2)

在您的情况下,使用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则不会。

某些浏览器会在链接上使用Open in new tab时将会话值从一个窗口复制到另一个窗口,但在这种情况下听起来不会出现问题。

答案 1 :(得分:1)

查看keydown javascript事件:

https://developer.mozilla.org/en-US/docs/Web/Reference/Events/keydown

然后,您可以使用其key属性检查F5,并使用event.preventDefault阻止浏览器重新加载

document.body.addEventListener("keydown", function(event) {
    if (event.key == "F5") {
        console.log("F5 Pressed!");
        //do your stuff here
        event.preventDefault();
    }
});

小提琴:http://jsfiddle.net/ANC7e/