11

我想在页面重新成为焦点后刷新页面。对于令人耳目一新的部分,我想我可能会使用:

location.reload();

棘手的部分是如何确定何时刷新?
首先,窗口必须失去焦点(这可以通过.blur()我假设来确定)。
只有在失去焦点的窗口重新获得焦点后,才会触发自身的刷新。可以.focus()现场使用吗?还是我必须在这里使用其他东西?

我该如何结合这两种情况?

你的方法是什么?

4

3 回答 3

23

试试这个:

var blurred = false;
window.onblur = function() { blurred = true; };
window.onfocus = function() { blurred && (location.reload()); };

如果页面被隐藏,这只会重新加载页面

我不建议在 jQuery 中绑定到窗口焦点,页面会在几乎每个用户操作时重新加载。

更新

这在很大程度上依赖于 window.onfocus 和 window.onblur 的浏览器实现。Webkit 可能不支持 onblur 事件(在我的 chromium 中不支持),如果页面被隐藏,firefox 会调用模糊。

于 2012-07-03T15:00:04.637 回答
17

在我的开发环境中,我将此 JS 片段添加到页面中 - 每当页面在变为非活动状态后变为活动状态时,它都会重新加载,例如,如果您在文本编辑器中键入然后单击浏览器,则页面将重新加载一次,而不会出现无限循环. 在同一浏览器会话中链接活动选项卡或活动窗口时,它也可以工作。

window.onblur= function() {window.onfocus= function () {location.reload(true)}};

如上所述,这确实取决于浏览器的实现,但在 chrome 中可以正常工作。

于 2013-05-06T20:03:59.290 回答
0

@Eamonn 的方法适用于他提到的 chrome。

对于火狐:

window.disableResetPrompt;
window.onblur= function() {window.onfocus= function () {location.reload(true)}};
于 2019-04-24T08:48:55.610 回答