首页 > 解决方案 > 重新加载页面焦点

问题描述

我有一个 Progressive Web App,每次用户打开它时都需要刷新它。

为了实现这一点,我尝试过:

1) First Option
window.onblur = function() {
    window.onfocus= function () {
        window.location = self.location;
    }
};

2) Second Option
var blurred = false;
window.onblur = function() { 
    blurred = true; 
};
window.onfocus = function() {
    blurred && (window.location = self.location); 
};

选项 1 的学分:https ://stackoverflow.com/a/16406350/11843328

选项 2 的学分:https ://stackoverflow.com/a/11313719/11843328

这很好用,但问题是有时当你点击某些东西时,它会再次重新加载。它基本上会通过一些动作连续重新加载 4 次。其他时候它按预期工作,只是重新加载一次,但大多数时候是连续 4 或 5 次。

我需要它在打开(焦点)时重新加载一次。是否有任何替代方案我可以尝试或任何建议将不胜感激!

标签: javascriptjquery

解决方案


确保您使用的是window焦点事件。正如其他人指出的那样,没有必要使用该blur事件,因为focus只有在窗口焦点模糊时才会触发。

您也可以使用该window.location.reload方法重新加载窗口。

window.addEventListener("focus", e => window.location.reload());
<p>Look for a flicker</p>


推荐阅读