【问题标题】:Reload Page on Focus重新加载页面焦点
【发布时间】:2020-05-30 16:34:32
【问题描述】:

我有一个 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 次。

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

【问题讨论】:

  • 开放是什么意思?你的意思是onload,比如第一次加载页面的时候?或者你的意思是onfocus,当窗口获得焦点时?对于您的目标是哪个事件有点困惑,但当我知道更多时我会留下答案。
  • @Christian 这是onfocus
  • 您不使用 onload 是否有原因?
  • 我还注意到你想在 window.onfocus 上执行的那个函数上做什么,因为它只是把 && (window.location = self.location);这没有任何意义。请再看看你的问题?
  • @MosiaThabo 是的,因为我在 iOS PWA 中使用了这个功能,它会缓存打开的应用程序的版本,所以每当你打开应用程序时,你会得到与它一样的状态,因为它是基本上是一个“书签”,所以页面已经加载,这就是为什么 onFocus 在他们“打开”它时工作的原因。

标签: javascript jquery


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    您不需要 onblur 事件。仅使用 onfocus 事件即可完成工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-24
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      相关资源
      最近更新 更多