焦点后如何刷新页面?
Posted
技术标签:
【中文标题】焦点后如何刷新页面?【英文标题】:How to refresh page after focus? 【发布时间】:2012-07-04 00:48:41 【问题描述】:我想在页面重新成为焦点后刷新它。对于我认为可以使用的令人耳目一新的部分:
location.reload();
棘手的部分是如何确定何时刷新?
首先,窗口必须失去焦点(我假设可以通过.blur()
确定)。
只有在失去焦点的窗口重新获得焦点后,才会触发自身的刷新。我可以在现场使用.focus()
吗?还是我必须在这里使用其他东西?
如何结合这两种情况?
你的方法是什么?
【问题讨论】:
你说的重新成为焦点后是什么意思? 你可能想要$(window).on('focus', ...)
首先关注,设置一些任意全局变量,如winFocus = 0
;,然后使用条件语句。 if(winFocus == '0') winFocus = '1' if(winFocus == '1') winFocus = 2if(winFocus == '2') location.reload();只需重新编写代码为您工作,并在您的焦点和模糊调用中使用它。
您可以使用切换功能。当文档失去焦点时,您可以更改状态。当焦点再次发生时,我们检查状态是否先前被模糊更改。
作为用户,我无法想象我想要一个页面在我从其他地方返回时自动刷新。
【参考方案1】:
试试这个:
var blurred = false;
window.onblur = function() blurred = true; ;
window.onfocus = function() blurred && (location.reload()); ;
只有在页面被隐藏时才会重新加载页面
我不建议在 jQuery 中绑定到窗口焦点,页面会在几乎每个用户操作时重新加载。
更新
这在很大程度上依赖于 window.onfocus 和 window.onblur 的浏览器实现。 Webkit 可能不支持 onblur 事件(在我的 chromium 中不支持),如果页面被隐藏,firefox 会调用模糊。
【讨论】:
下面的“blurred”是做什么的?模糊 && (location.reload()); @helga blurred 最初为 false,在 onBlur 上设置为 true。 blurred&& 检查 blurred 是真还是假 @DavChana 哦,所以这是没有 ELSE 的 IF 的快捷方式。我不知道,谢谢! 当用户单击引导模式内的文本区域时,如何使此代码工作?似乎在移动浏览器上,它会导致整个页面刷新。【参考方案2】:在我的开发环境中,我将这个 JS 的 sn-p 添加到页面中 - 每当页面在变为非活动状态后变为活动状态时,它都会重新加载,例如,如果您在文本编辑器中键入然后单击返回浏览器,页面将重新加载一次没有无限循环。当在同一个浏览器会话中链接活动选项卡或活动窗口时,它也可以工作。
window.onblur= function() window.onfocus= function () location.reload(true);
如上所述,这确实取决于浏览器的实现,但在 chrome 中可以正常工作。
【讨论】:
【参考方案3】:@Eamonn 的方法适用于他提到的 chrome。
对于火狐:
window.disableResetPrompt;
window.onblur= function() window.onfocus= function () location.reload(true);
【讨论】:
以上是关于焦点后如何刷新页面?的主要内容,如果未能解决你的问题,请参考以下文章