重定向不活动



我的目标是将用户保持在视图中,只要他/她继续在一定的失误中单击一个按钮。

我正在使用导轨,正在相关视图中通过嵌入式JS探索解决方案。

到目前为止
var delayedRedirect = function (){
  window.location = "/";
}
var delay = 10000;
$(document).ready(function() {
  setTimeout('delayedRedirect()', delay);
});

我一直在尝试编写一个重置" delay"或再次调用settimeoutfunction的值的函数。

$('#btn-persist').click(function() {
  delay = 3000; 
 // or calling again setTimeout('delayedRedirect()', delay);
});

,但我注意到更改变量不会影响已经调用的Settimeout函数。

我还尝试使用下面的cleartimeout函数而没有成功

var delayedRedirect = function (){
  window.location = "/persists";
}
var delay = 3000;
var triggerRedirect = function() { setTimeout('delayedRedirect()', delay); 
}
var stopRedirect = function (){
  clearTimeout(triggerRedirect);
}
$(document).ready(function() {
  triggerRedirect();
  $('#btn-persist').click(function() {
    stopRedirect();
  });
});

我想知道为什么这可能不起作用,以及是否有其他方法可以停止已被调用的Settimeout函数执行,以便我可以再次称呼它以有效地将时间重置为"延迟"的原始值。

同时,我不想停止并行运行的任何其他JS函数。

您看到了一个更好的解决方案来实现这一目标吗?

为什么ClearTime Out不起作用的主要问题。因为您正在清除匿名函数,而不是settimeout变量

更改此

var triggerRedirect = function() { setTimeout('delayedRedirect()', delay); 
}

到这个

var triggerRedirect = setTimeout('delayedRedirect()', delay);

编辑:还要更改此(如果要重新启动无活动重定向触发器)

$('#btn-persist').click(function() {
    stopRedirect();
  });

到这个

$('#btn-persist').click(function() {
        stopRedirect();
        triggerRedirect();
      });

最新更新