Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在不更改DOM的情况下,在指定的时间后调用函数_Javascript_Jquery_Dom - Fatal编程技术网

Javascript 在不更改DOM的情况下,在指定的时间后调用函数

Javascript 在不更改DOM的情况下,在指定的时间后调用函数,javascript,jquery,dom,Javascript,Jquery,Dom,假设您想在DOM中没有任何更改后3秒钟显示一个警报,只需按下一个触发大量更改的按钮 通过jQuery获取按钮的示例: $someButton.on('click',function(){ setInterval(function(){ if( noChangesSinceLastTime()){ time += 100; } else{ time = 0; } if( time == 3000){ alert

假设您想在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。

这只是伪代码,但您可以尝试以下操作:

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

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

您可以侦听所有的,并在其中任何一个被触发时设置一个标志

然后在区间函数中,您可以检查该标志并执行您想要的任何逻辑


关于,

我尝试了类似的方法,用
while
块代替
if
,但结果是阻塞了代码,因此不允许DOM更改完成。@Sam while循环正在阻塞。我明白了。我来试试你的解决办法。无论如何,据我所知,/*一些变化发生了*/并不是很容易检测到的。我正在看一看,但我不知道它们是否能在不同的浏览器中开箱即用。这非常有效,但我的方法是错误的,因为DOM中存在隐藏的更改,这些更改持续了一段时间。我最后做的是类似的事情,但只检测到一个特定的变化,总是在幻灯片加载完成后触发。(在我的例子中,是“加载”视觉反馈的可见性)