A small wrapper around MutationObserver to hook into creation of elements (filtered on CSS selector) or removal of nodes.
Ovu skriptu ne treba izravno instalirati. To je biblioteka za druge skripte koje se uključuju u meta direktivu // @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
});
}