Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function selectAndMonitor(target, selector, handler) {
- let config = { childList: true, subtree: true }
- let record = new WeakSet()
- let callback = mutations => {
- for (let m of mutations) {
- for (let n of m.addedNodes) {
- if (n.nodeType !== Node.ELEMENT_NODE) {
- continue
- }
- if (n.matches(selector)) {
- if (!record.has(n)) {
- record.add(n)
- handler(n)
- }
- }
- for (let v of n.querySelectorAll(selector)) {
- if (!record.has(v)) {
- record.add(v)
- handler(v)
- }
- }
- }
- }
- }
- let observer = new MutationObserver(callback)
- observer.observe(target, config)
- target.querySelectorAll(selector).forEach(v => {
- record.add(v)
- handler(v)
- })
- return () => {
- observer.disconnect()
- record = null
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement