浏览器是否可以区分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/