0

可能重复:
当窗口不在焦点时停止的Javascript倒数计时器

我一直在寻找解决这个问题的方法。

我想做的是:当访问者点击网站上的特定链接时,他会被重定向到另一个页面。

在另一个页面上,他必须停留 20 秒。但我想应用倒计时,所以他看到计时器从 20 秒减少到 0 秒。

当计时器达到 0 秒时,我将执行一个 php 脚本。(已经到位)

现在,我还想要的是,只要访问者在这个页面上,计时器就会一直滴答作响,(如果这个页面是焦点),否则计时器会停止,直到他回到页面上

我已经搜索了很多以找到解决方案,但我什至不知道它是否可以使用 php.ini 解决。

任何帮助至少让我知道在哪里搜索将不胜感激

非常感谢你

4

4 回答 4

0

我认为可以完成这项工作,您只需在此脚本之前包含 jQuery 库。用 jQuery 编写脚本比纯 javascript 容易得多。就我个人而言,我很少使用纯 JavaScript。

于 2012-09-21T18:18:56.440 回答
0

阴暗 - 为什么?网站不应该与人类互动吗?

您可能可以使用 Javascript 来做到这一点,但有人认为这会惹恼您的用户/客户/客户/雇员。

PS:PHP 只是在服务器上运行。

于 2012-09-21T18:26:02.080 回答
0

这在 PHP 中是不可行的。PHP 是一种服务器端语言,因此您请求一个页面,它会被编译和提供。

您将需要 JavaScript。您需要做的是将任务分解为多个步骤。所以你知道:

  1. 应该有 20 秒的倒计时
  2. 应该在倒计时结束时执行一个脚本

因此,您的第一步是查看setTimeout()JavaScript 中的函数。然后,您希望回调函数重定向或通过 XMLHttpRequest (AJAX) 调用另一个 URL。

于 2012-09-21T18:09:31.073 回答
0

在 PHP 中需要做的是确定计时器开始的时间,例如请求页面的时间。假设页面是download.php,代码看起来像这样:

session_start(); //this has to be before you echo any text out or send any headers
$_SESSION['minimum_time'] = time() + 20;

然后在页面输出的 HTML 中,您可以显示 JavaScript 倒数计时器。您应该只搜索一个简单且适合您的应用程序的产品。

让 JS 计时器倒计时 20 秒。也许在这里多加一秒,或者从 PHP 端减去一秒以防万一,但由于网络时间和页面渲染,用户很可能在 JS 计时器结束时总是比开始时间晚至少 20 秒。

在 JS 倒计时重定向用户或向他们展示新页面的链接之后,我们称之为它file.php,它应该有这样的内容:

if (time() > $_SESSION['minimum_time']) {
  print "Thanks for waiting!";
}
于 2012-09-21T18:54:43.843 回答