我使用变异观察器来监控DOM的变化,我有一个NodeIterator,用于替换某些文本节点,这些节点包含由具有动态创建内容的正则表达式过滤的文本。
我遇到的问题是,在第一次运行NodeIterator时,Node Iterator现在指向null,它不能针对动态插入的内容运行算法。如果我试图重新分配它,它会挂断。为什么要挂断?这个问题有解决方案吗?
var nodeIterator = document.createNodeIterator(
document.body,
NodeFilter.SHOW_TEXT,
acceptAlgo,
false
);
iterate(nodeIterator);
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if (mutation.addedNodes) {
var dynamicNode = document.createNodeIterator(
mutation.target,
NodeFilter.SHOW_TEXT,
acceptAlgo,
false
);
iterate(dynamicNode);
}
});
});
function iterate(iterator) {
while ((node = iterator.nextNode())) {
replaceFunction(node);
}
}
var config = {
attributes: false,
childList: true,
characterData: false,
subtree: true
};
observer.observe(document.body, config);