【问题标题】:Trigger client side javascript based on datetime基于日期时间触发客户端javascript
【发布时间】:2022-01-13 16:09:28
【问题描述】:

我有一个 event_start 时间,我想在该事件开始 10 秒后运行一个脚本,但不知道如何触发该脚本。

const date = Date().toString();
const currentDateParse = Date.parse(date);
const trigger = Date.parse(startTime) + 1000 * 10

这就是我尝试触发脚本的方式,但它不起作用。当currentDateParse 等于trigger 时,如何启动我的函数。或者,更简单地说,是活动开始后 10 秒。

if (currentDateParse = trigger)
   <function code underneath works already>

【问题讨论】:

    标签: javascript scripting client-side prompt


    【解决方案1】:

    计算现在和你想触发脚本的时间差,然后使用setTimeout()调用它。

    const timediff = trigger - new Date().getTime();
    setTimeout(function() {
        // do what you want
    }, timediff);
    

    【讨论】:

    • 谢谢@barmar - 你们都回答了我的问题,所以我将其标记为正确但有后续...我的脚本正在向我的服务器发送数据,但 20 分钟后我的页面进入休眠状态并且在我刷新之前脚本不会运行。有没有办法防止这种情况发生? (或从服务器提示)。
    • 与此问题相关的声音:stackoverflow.com/questions/6032429/…
    【解决方案2】:

    试试这个(下面的解释):

    let startTime = "18:00";
    let currentTime = new Date();
    let target = new Date().parse(startTime);
    
    let timeout = target - currentTime + 1000 * 10; // how long should it wait till the functions is executed
    
    function runTenSecAfterEvent() {
      // do something here
    }
    
    setTimeout(runTenSecAfterEvent, timeout);
    

    说明

    计算target(开始时间)和currentTime后,你需要知道它们之间的时间差(timeout),所以target减去currentTime。之后,添加10000ms

    然后定义事件发生后 10 秒执行的函数 (runTenSecAfterEvent())。

    最后,您创建一个timeout

    【讨论】:

    • 谢谢@natre214 - 你们都回答了我的问题,所以我将其标记为正确但有后续...我的脚本正在向我的服务器发送数据,但 20 分钟后我的页面进入休眠状态并且在我刷新之前脚本不会运行。有没有办法防止这种情况发生? (或从服务器提示)。
    猜你喜欢
    • 1970-01-01
    • 2010-11-04
    • 2010-11-20
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    相关资源
    最近更新 更多