A small wrapper around MutationObserver to hook into creation of elements (filtered on CSS selector) or removal of nodes.
Dieses Skript sollte nicht direkt installiert werden. Es handelt sich hier um eine Bibliothek für andere Skripte, welche über folgenden Befehl in den Metadaten eines Skriptes eingebunden wird // @require https://update.greasyfork.org/scripts/565361/1755404/Node%20Mutation%20Hook%20Library.js
// ==UserScript==
// @name Node Mutation Hook Library
// @namespace https://greasyfork.org/users/1545341
// @version 2.1.0
// @license MIT
// @author abcenjoyer
// @description A small wrapper around MutationObserver to hook into creation of elements (filtered on CSS selector) or removal of nodes.
// ==/UserScript==
function hookCreation(selector, callback) {
const observer = new MutationObserver((mutations) => {
for (const record of mutations) {
for (const node of record.addedNodes) {
if (node.nodeType === Node.ELEMENT_NODE) {
if (node.matches(selector)) {
callback(node, observer);
}
for (const element of node.querySelectorAll(selector)) {
callback(element, observer);
}
}
}
}
});
observer.observe(document.documentElement, {
childList: true,
subtree: true
});
}
function hookRemoval(targetNode, callback) {
const observer = new MutationObserver((mutations) => {
for (const record of mutations) {
for (const node of record.removedNodes) {
if (node.contains(targetNode)) {
observer.disconnect();
callback();
}
}
}
});
// observing the entire document is required because if targetNode is deleted because an ancestor node was, observing the parent won't work
observer.observe(document, {
childList: true,
subtree: true
});
}