【问题标题】: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 = 2}if(winFocus == '2'){ location.reload();只需重新编写代码为您工作,并在您的焦点和模糊调用中使用它。
  • 您可以使用切换功能。当文档失去焦点时,您可以更改状态。当焦点再次发生时,我们检查状态是否先前被模糊更改。
  • 作为用户,我无法想象我想要一个页面在我从其他地方返回时自动刷新。

标签: javascript jquery


【解决方案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)}};
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-12
      • 1970-01-01
      • 2011-04-30
      • 2014-06-21
      • 2011-03-29
      • 2018-04-30
      • 1970-01-01
      • 2015-07-18
      相关资源
      最近更新 更多