【问题标题】:PHP show a real-time countdown (20 seconds) while in focus [duplicate]PHP在焦点时显示实时倒计时(20秒)[重复]
【发布时间】:2012-09-21 18:06:21
【问题描述】:

可能重复:
Javascript countdown timer that stops when window is not in focus

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

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

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

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

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

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

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

非常感谢您

【问题讨论】:

  • 当然用 PHP 是不行的。客户端设备上的所有工作都必须通过 javascript 或编译到它的东西(如 elm、flajax 或 coffeescript)来完成。
  • 伟大的另一个 adf.ly 克隆,lol ;p Na 这样的任何事情都可以被绕过,除非你在服务器上增加一个计数。
  • Bryan,非常感谢,这正是我需要的!
  • @Bryan 说这话有点惊讶,但是如何在 php 页面中调用此函数?我放了

标签: php javascript focus countdown


【解决方案1】:

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

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

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

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

【讨论】:

  • 好的,所以我需要JavaScript,好的和焦点问题,我假设也可以用javascript解决吗? ,问题是我是一个 php 开发人员,没有 Javascript 经验,但会尽我所能让它工作。非常感谢。
  • 我不确定你所说的专注是什么意思。用户可以打开页面,然后在页面在后台倒计时时切换到不同的选项卡,他们不能吗?
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    Shady - 为什么?难道网站不应该与人类互动吗?

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

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

    【讨论】:

      【解决方案4】:

      您需要在 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!";
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-24
        • 1970-01-01
        • 2019-07-04
        相关资源
        最近更新 更多