Quantcast
Channel: Recent Questions - Stack Overflow
Viewing all articles
Browse latest Browse all 12111

Why does MutationObserver not detect nodes after a random point?

$
0
0

I am building a Tampermonkey user script. My actual script is a lot more complex but I am able to reproduce with the following example.

My script needs to work on Hacker News website.

For example on this page:

https://news.ycombinator.com/item?id=39778570

Their html has .athing class which contains each comment. For each such class, I need to do a certain task (not relevant to this question). I am using MutationObserver to observe for those nodes in my user script:

My user script is this:

// ==UserScript==// @name         HN// @namespace    https://news.ycombinator.com/*// @version      2024-02-02// @description  For Hacker News// @author       Bobby// @match        https://news.ycombinator.com/*// @grant        none// @run-at       document-start// ==/UserScript==const recordObserver = new MutationObserver((mutations, observer) => {    mutations.forEach(m => {        if (m.type === "childList" && m.addedNodes) {            m.addedNodes.forEach(target => {                if (target.nodeType == Node.ELEMENT_NODE) {                    target.querySelectorAll(`.athing:not([read_123])`).forEach (element=> {                        element.setAttribute(`read_123`, true);                        element.style.background = '#00FF0055';                        console.log(element.id);                    });                }            });        }    });});recordObserver.observe(document, {    attributes: false,    childList: true,    characterData: false,    subtree: true});

Notice how once detected, my script changes the background color of that element.

This seems to work fine to a certain point.

It randomly stops working at random nodes. This screenshot shows the issue:

enter image description here

Notice how it detected until the comment Yoga is great but only really supports flexbox. For..... after which it stopped detecting and also stopped printing the id in console.

If I access the same page again, it stops at different node.

I am unable to pin point what exactly is causing this issue. Any help would be appreciated.

Note that this issue isn't specific to Tampermonkey. My actual issue is occurring on iOS WKWebView where a user inserted script shows the same issue. I am able to reproduce this on desktop this way.


Viewing all articles
Browse latest Browse all 12111

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>