再一次:SetInterval 不会停止
Once Again: SetInterval Doesn't Stop
我知道这个问题已被问过很多次,但我无法用这些解决方案找出我的问题。我的 setInterval 不会停止。
我已经设置了一个突变观察器来检查是否弹出错误。如果是,我想展示一条自定义消息。
let elem = document.querySelector("#Page > div");
let observer = new MutationObserver(mutationRecords => {
// console.log(mutationRecords); // console.log(the changes)
let my_interval = setInterval((interval) => {
err_msg = document.querySelector("#ErrorMessage");
if(err_msg != null){
if(err_msg.innerText == "Custom Message"){clearInterval(my_interval);}
console.log(err_msg.innerText);
err_msg.innerText = "Custom Message";
clearInterval(my_interval);
}
}, 10);
});
observer.observe(elem, {
childList: true, // observe direct children
subtree: true, // and lower descendants too
characterDataOldValue: true // pass old data to callback
});
请帮帮我。
谢谢。
为什么需要 MutationObserver 和 setInterval?对我来说,它们似乎是解决问题的两种不同方法(观察变化)。如果您在突变观察器处理程序中启动一个 setInterval,将在每次 DOM 更新时创建一个新间隔 - 因此一次可能有多个 setInterval 运行。
查看变异观察器中的逻辑,只有在间隔触发时存在#ErrorMessage 时才会停止间隔。
因此您将为每个突变设置一个 setInterval,但仅在特定条件下清除它们,可能会留下一些 运行。
我知道这个问题已被问过很多次,但我无法用这些解决方案找出我的问题。我的 setInterval 不会停止。 我已经设置了一个突变观察器来检查是否弹出错误。如果是,我想展示一条自定义消息。
let elem = document.querySelector("#Page > div");
let observer = new MutationObserver(mutationRecords => {
// console.log(mutationRecords); // console.log(the changes)
let my_interval = setInterval((interval) => {
err_msg = document.querySelector("#ErrorMessage");
if(err_msg != null){
if(err_msg.innerText == "Custom Message"){clearInterval(my_interval);}
console.log(err_msg.innerText);
err_msg.innerText = "Custom Message";
clearInterval(my_interval);
}
}, 10);
});
observer.observe(elem, {
childList: true, // observe direct children
subtree: true, // and lower descendants too
characterDataOldValue: true // pass old data to callback
});
请帮帮我。
谢谢。
为什么需要 MutationObserver 和 setInterval?对我来说,它们似乎是解决问题的两种不同方法(观察变化)。如果您在突变观察器处理程序中启动一个 setInterval,将在每次 DOM 更新时创建一个新间隔 - 因此一次可能有多个 setInterval 运行。
查看变异观察器中的逻辑,只有在间隔触发时存在#ErrorMessage 时才会停止间隔。
因此您将为每个突变设置一个 setInterval,但仅在特定条件下清除它们,可能会留下一些 运行。