[英]How to delete mutation record objects in javascript
我正在觀察Div元素上的更改,該更改被帶有ajax調用的子div填充。 我的目的是在觀察到的Record對象中進行一些檢查並過濾其中的一些對象。 如何從觀察到的突變列表中刪除/刪除/過濾這些突變記錄? 並在網頁中對其進行過濾。
我試圖從突變列表中刪除突變記錄,但是沒有用。 謝謝你的幫助。
Array.prototype.remove = function() {
var what, a = arguments, L = a.length, ax;
while (L && this.length) {
what = a[--L];
while ((ax = this.indexOf(what)) !== -1) {
this.splice(ax, 1);
}
}
return this;
};
var observer = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
var addedNode = mutation.addedNodes[0];
if(addedNode){
var innText = addedNode.innerText;
//console.log("number " + i + " | " + addedNode.innerText);
if(innText){
if(innText.toLowerCase().indexOf(someText) > -1){
mutations.remove(mutation);
}
}
}
});
});
var config = {
attributes: true,
childList: true,
characterData: true,
characterDataOldValue: true,
subtree: true
};
observer.observe(text, config);
我假設您的變異對象是一個復雜的對象,而不是普通的數據類型,因此您在.remove方法中進行的“ indexOf”檢查不會刪除任何內容。
您應該創建其他方法,例如“ checkForElement”或其他方法。 在這種方法中,您可以決定什么是您的變異對象相等。
在堆棧溢出中已經有解決方案,例如對象數組中的indexOf方法?
您無法中止突變,因為在執行回調時,已經發生了突變。
您可以做的是使用MutationRecord中提供的信息“回滾” 變異 ,特別是您似乎需要關注的addedNodes
。 您可以簡單地迭代這些,然后為每個節點將其從其父節點中刪除:
if(node.parentNode) {
node.parentNode.removeChild(node);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.