2

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

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

这个想法可能吗?

说你有

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

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

我有适度的 jQuery 经验,很想听听一些关于此的反馈和想法。先感谢您

4

2 回答 2

2

您需要使用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);
});
于 2012-09-03T12:47:50.447 回答
1

到 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. :

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

于 2012-09-03T12:50:59.817 回答