【问题标题】:Timer [Javascript / PHP / Python ...]计时器 [Javascript / PHP / Python ...]
【发布时间】:2018-01-04 20:54:13
【问题描述】:

我在网上寻找解决以下问题的方法:如何创建一个在任何现代网络浏览器的非活动标签中工作的计时器

使用 JavaScript 的解决方案似乎存在(使用 setInterval / setTimeout 并使用 Date 对象/时间戳),但这些需要用户重新聚焦窗口以重新加载计时器。如果计时器结束并且窗口失焦怎么办?我需要计时器以某种方式发出声音或提醒用户,因此这些解决方案不适用。

我要求使用任何服务器端或客户端语言的解决方案。

【问题讨论】:

  • 这肯定取决于javascript引擎/浏览器...
  • 如果有帮助,这是一个将在谷歌浏览器上独家提供的应用程序。 V8 发动机。
  • 那么我不确定“要求用户重新聚焦”的问题是什么。 this 在失焦时似乎工作正常
  • 尝试使用 Chrome。进入一个空选项卡并输入控制台setTimeout(alert, 10000)。按Enter 并退出选项卡。看时钟 10 秒钟。警报将在 15 到 20 秒后而不是 10 秒后弹出。我需要计时器的准确性。
  • hmm.... 对我来说似乎是准确的:/。这就是为什么我说:这当然取决于

标签: javascript php python timer


【解决方案1】:

setIntervalsetTimeout 应该可以工作,即使选项卡不在焦点上(与任何其他操作一样)。

尝试在新选项卡的控制台中编写此代码并切换到另一个选项卡:

setTimeout(function(){alert('hello')}, 5000)

5 秒后,标签上会出现某种标记。 这是它在 Firefox 中的外观:

【讨论】:

  • 这可能适用于 Firefox,但并非适用于所有现代浏览器,当然也不适用于 Google Chrome。
  • 我很确定 firefox 也是一个现代浏览器:D 刚刚在 chrome 中尝试了我的“技巧”,它没有标记选项卡,而是直接跳到那个选项卡(并集中它)。也许您对 chrome 有严格的限制,不允许此类操作?
  • 注意全部。 Firefox 是一个现代浏览器。当调用alert 时,Chrome 会“直接跳入”标签页,但由于未优先处理未聚焦的标签页,它会比预期的要晚。
  • 是的,看起来警报延迟了一点(在我的情况下为 1 秒)。但我认为这是因为浏览器优化而发生的。它将焦点选项卡视为主要进程,而其他选项卡的优先级较低。而且我认为您不能只要求浏览器让您的标签“成为一件大事”,因为每个人都会这样做。
  • 谷歌做到了,所以它一定是可能的。 google.co.uk/…
猜你喜欢
  • 1970-01-01
  • 2010-11-28
  • 2011-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多