焦点后如何刷新页面?

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);

【讨论】:

以上是关于焦点后如何刷新页面?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 selenium webdriver 进行强制页面刷新?

如何让linkbutton点击后不刷新页面

mint-ui在iOS中点击键盘会自动刷新页面

ajax调用后如何停止刷新页面?

ajax提交后如何防止页面刷新

怎么刷新页面后,js就不执行了