Javascript 如何确定是否调用了突变?
我在下面有一个突变观察函数。问题是,如果满足“false”的条件,console.log将在浏览器中记录多次。我认为解决这个问题的最好方法是在这里添加一些东西,如果遇到变异,就不要运行函数 添加mutationObserver.disconnect()时不执行此操作在else if条件之后是实现这一点的最佳方法吗Javascript 如何确定是否调用了突变?,javascript,ajax,mutation-observers,Javascript,Ajax,Mutation Observers,我在下面有一个突变观察函数。问题是,如果满足“false”的条件,console.log将在浏览器中记录多次。我认为解决这个问题的最好方法是在这里添加一些东西,如果遇到变异,就不要运行函数 添加mutationObserver.disconnect()时不执行此操作在else if条件之后是实现这一点的最佳方法吗 window.addEventListener('DOMContentLoaded', (event) => {
window.addEventListener('DOMContentLoaded', (event) => {
// Listening to Class Changes //
var mutationObserver = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
var change = mutation.target.classList.contains('hidden-class');
if (change === true) {
return true;
}
else if (change === false) {
console.log('this mutation is visible');
}
});
})
mutationObserver.observe(document.getElementById('cart-wrapper'), {
attributes: true,
characterData: true,
childList: true,
subtree: true,
attributeOldValue: true,
characterDataOldValue: true
});
});
使用
.some
迭代突变,查看目标的类列表是否包含该类:
var mutationObserver = new MutationObserver(function (mutations) {
const somethingJustMutatedIsHidden = mutations.some(
mutation => mutation.target.classList.contains('hidden-class')
);
if (somethingJustMutatedIsHidden) {
// do something?
} else {
console.log('this mutation is visible');
}
})
请记住,forEach
忽略其返回值;您当前拥有的返回true
没有任何作用