Javascript 区分F5或Open for Browser

Javascript 区分F5或Open for Browser,javascript,browser,Javascript,Browser,是否可以区分浏览器的F5或Open(单击链接,将URL粘贴到空页或新选项卡中,等等) 为什么??因为我想改进用户界面的人机工程学。在我的应用程序中,一些昂贵的计算用于呈现页面。所以页面被缓存,页面上有额外的按钮“重新计算” 当有完全相同的标准“F5”按钮时,我不喜欢有额外的“重新计算”按钮 我同时控制服务器和客户端JS,是否有任何方法可以通知“F5”事件 重要的是要检测所有“F5”事件,不要错过它。但有时(有时但不经常)有额外的假“F5”事件是可以的-当打开的页面被错误地检测为“F5”时。查看键

是否可以区分浏览器的F5或Open(单击链接,将URL粘贴到空页或新选项卡中,等等)

为什么??因为我想改进用户界面的人机工程学。在我的应用程序中,一些昂贵的计算用于呈现页面。所以页面被缓存,页面上有额外的按钮“重新计算”

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

我同时控制服务器和客户端JS,是否有任何方法可以通知“F5”事件


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

查看
键下
javascript事件:

然后,您可以使用其
属性检查F5,并使用
事件阻止浏览器的重新加载。preventDefault

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

Fiddle:

查看
按键下的
javascript事件:

然后,您可以使用其
属性检查F5,并使用
事件阻止浏览器的重新加载。preventDefault

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

Fiddle:

查看
按键下的
javascript事件:

然后,您可以使用其
属性检查F5,并使用
事件阻止浏览器的重新加载。preventDefault

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

Fiddle:

查看
按键下的
javascript事件:

然后,您可以使用其
属性检查F5,并使用
事件阻止浏览器的重新加载。preventDefault

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

小提琴:

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


在链接上使用“在新选项卡中打开”时,某些浏览器会将会话值从一个窗口复制到另一个窗口,但在这种情况下,这似乎不是问题。

在您的情况下,使用“会话存储”听起来是最好的选择

比如:

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
不会


在链接上使用“在新选项卡中打开”时,某些浏览器会将会话值从一个窗口复制到另一个窗口,但在这种情况下,这似乎不是问题。

在您的情况下,使用“会话存储”听起来是最好的选择

比如:

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
不会


在链接上使用“在新选项卡中打开”时,某些浏览器会将会话值从一个窗口复制到另一个窗口,但在这种情况下,这似乎不是问题。

在您的情况下,使用“会话存储”听起来是最好的选择

比如:

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
不会


在链接上使用“在新选项卡中打开”时,某些浏览器会将会话值从一个窗口复制到另一个窗口,但在这种情况下,这听起来似乎不是问题。

OP不是询问如何停止
F5
——只是检测它。感谢回复,但是,似乎可以单击“F5”按钮,但它不会被检测到。OP不是问如何停止
F5
——只是检测它。感谢回复,但似乎可以单击“F5”按钮,但它不会被检测到。OP不是问如何停止
F5
——只是检测它。感谢回复,但是,似乎可以单击“F5”按钮而不会被检测到。OP不是询问如何停止
F5
——只是检测它。感谢您的回复,但似乎可以单击“F5”按钮而不会被检测到。