Javascript 在不更改DOM的情况下,在指定的时间后调用函数
假设您想在DOM中没有任何更改后3秒钟显示一个警报,只需按下一个触发大量更改的按钮 通过jQuery获取按钮的示例: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
$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中存在隐藏的更改,这些更改持续了一段时间。我最后做的是类似的事情,但只检测到一个特定的变化,总是在幻灯片加载完成后触发。(在我的例子中,是“加载”视觉反馈的可见性)