A small wrapper around MutationObserver to hook into creation of elements (filtered on CSS selector) or removal of nodes.
Tento skript by nemal byť nainštalovaný priamo. Je to knižnica pre ďalšie skripty, ktorú by mali používať cez meta príkaz // @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
});
}