【问题标题】:jQuery timer to trigger events on time x, time y, time z possible?jQuery计时器可以在时间x,时间y,时间z上触发事件吗?
【发布时间】:2012-08-28 04:55:38
【问题描述】:

目前我的 webapp 接收 websocket 数据来触发动作。

这会在页面重新加载时中断,因此我想要一个能够触发某个事件的客户端解决方案。

这个想法可行吗?

说你有

  • TimeX = 距离 current_time 10 秒应该开始触发 X
  • TimeY = 20 秒后 current_time 应该开始触发 Y
  • TimeZ = 距 current_time 30 秒应开始触发 Z

    1. 是否可以将这些存储在 html 中,并在秒数倒计时为零时执行一些倒计时触发器?
    2. 如果浏览器会在倒计时 0 到 1 之间进行重定向,是否仍有可能触发事件,比如 2/3 故障转移时间?

我有少量的 jQuery 经验,很想听听对此的一些反馈和想法。提前谢谢你

【问题讨论】:

    标签: jquery events timer triggers


    【解决方案1】:

    您需要使用setInterval() 来设置对函数的延迟调用。像这样的:

    var trigger;
    function myFunc(t) {
        switch (t) {
            case "Y": 
                callTriggerY();
                trigger = "Z";
                break;
            case "Z": 
                callTriggerZ();
                trigger = "X";
                break;
            default: 
                callTriggerX();
                trigger = "Y";
                break;
    }
    
    setInterval(function() { myFunc(trigger); }, 10000); // call on interval
    $(window).unload(function() { // call on leaving/reloading page
        myFunc(trigger);
    });
    

    【讨论】:

      【解决方案2】:

      到 1. :

      是的,这是可能的。

      JavaScript

      $(function() {
          $('.timer').each(function(entity) {
              setTimeout(function(eval(entity.attr("data-timer-code"))), parseInt(entity.attr("data-timeout")));
          }
      });
      

      HTML

      <div class="timer" data-timeout="12000" data-timer-code="asdf()"></div>
      

      我所做的是:我将特殊数据添加到一个 div 并在 JavaScript 代码中,我获取所有这些 div 并为每个 div 创建计时器。

      到 2. :

      遗憾的是,我不知道如何将其从页面上下文中传递出去并在再次加载页面时重新加载计时器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-14
        • 2018-06-09
        • 2012-03-28
        • 1970-01-01
        相关资源
        最近更新 更多