在指定的时间量后调用函数而不更改DOM

时间:2013-01-07 19:11:54

标签: javascript jquery dom

假设您想在按下触发大量更改的按钮后,DOM中没有任何更改后3秒显示警报。

通过jQuery获取按钮的示例:

$someButton.on('click',function(){
  setInterval(function(){
    if( noChangesSinceLastTime()){
      time += 100;  
    }
    else{
      time = 0;
    } 

    if( time == 3000){
      alert("3 seconds without changes!");
    }

  },100);
});

假设该按钮上的click事件具有一些其他绑定,这些绑定超出了DOM操作的一系列功能。

我怎样才能实现noChangesSinceLastTime()功能?

更多关于我的具体问题

我有一个HTML + JS + CSS幻灯片,可以与网络中的许多同时客户端一起使用。

当新客户加入时,他会自动发送到当前幻灯片开始播放其他人。

我想要做的是,在完成加载当前幻灯片之后,触发将新客户端与其他人同步所需的点击(因为幻灯片中的每次点击都会触发动画步骤,大多数幻灯片都有多个步骤)

我无法在JS幻灯片中添加回调,因为它是一个混淆的JS,不是由我制作的。

2 个答案:

答案 0 :(得分:0)

这只是伪代码,但您可以尝试这样的事情:

timer = setTimeout(function(){
   alert("3 seconds without changes!");
}, 3000);

if(/*some change happens*/) {
   clearTimeout(timer);
}

答案 1 :(得分:0)

你可以听取所有DOM Mutatation events并设置一个标志,如果其中任何一个被触发。

然后在你的区间函数中,你可以检查那个标志并做你想要的任何逻辑。 =)。

此致