是否可以区分F5或Open(点击链接,在空白页面中粘贴URL或新标签页等)?
为什么呢?因为我想改善用户界面的人体工程学。在我的应用程序中,一些昂贵的计算用于呈现页面。因此页面被缓存,并且“重新计算”页面上还有其他按钮。
当有完全相同的标准“F5”按钮时,我不喜欢额外的“重新计算”按钮。
我控制服务器和放大器客户端JS,有没有办法收到有关“F5”事件的通知?
检测所有“F5”事件非常重要,不要错过。但有时(有时但不经常)有额外的错误“F5”事件是可以的 - 当Open Page被错误地检测为“F5”时。
答案 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();
}
});