A small wrapper around MutationObserver to hook into creation of elements (filtered on CSS selector) or removal of nodes.
ეს სკრიპტი არ უნდა იყოს პირდაპირ დაინსტალირებული. ეს ბიბლიოთეკაა, სხვა სკრიპტებისთვის უნდა ჩართეთ მეტა-დირექტივაში // @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
});
}