我想在页面重新成为焦点后刷新页面。对于令人耳目一新的部分,我想我可能会使用:
location.reload();
棘手的部分是如何确定何时刷新?
首先,窗口必须失去焦点(这可以通过.blur()
我假设来确定)。
只有在失去焦点的窗口重新获得焦点后,才会触发自身的刷新。可以.focus()
现场使用吗?还是我必须在这里使用其他东西?
我该如何结合这两种情况?
你的方法是什么?
我想在页面重新成为焦点后刷新页面。对于令人耳目一新的部分,我想我可能会使用:
location.reload();
棘手的部分是如何确定何时刷新?
首先,窗口必须失去焦点(这可以通过.blur()
我假设来确定)。
只有在失去焦点的窗口重新获得焦点后,才会触发自身的刷新。可以.focus()
现场使用吗?还是我必须在这里使用其他东西?
我该如何结合这两种情况?
你的方法是什么?
试试这个:
var blurred = false;
window.onblur = function() { blurred = true; };
window.onfocus = function() { blurred && (location.reload()); };
如果页面被隐藏,这只会重新加载页面
我不建议在 jQuery 中绑定到窗口焦点,页面会在几乎每个用户操作时重新加载。
更新
这在很大程度上依赖于 window.onfocus 和 window.onblur 的浏览器实现。Webkit 可能不支持 onblur 事件(在我的 chromium 中不支持),如果页面被隐藏,firefox 会调用模糊。
在我的开发环境中,我将此 JS 片段添加到页面中 - 每当页面在变为非活动状态后变为活动状态时,它都会重新加载,例如,如果您在文本编辑器中键入然后单击浏览器,则页面将重新加载一次,而不会出现无限循环. 在同一浏览器会话中链接活动选项卡或活动窗口时,它也可以工作。
window.onblur= function() {window.onfocus= function () {location.reload(true)}};
如上所述,这确实取决于浏览器的实现,但在 chrome 中可以正常工作。
@Eamonn 的方法适用于他提到的 chrome。
对于火狐:
window.disableResetPrompt;
window.onblur= function() {window.onfocus= function () {location.reload(true)}};