user2828701
user2828701

Reputation: 305

mutation Observer not initializing/working

I have an issue with my mutationobserver and I cannot seem to understand what is going on. my first check is to make sure mutationobserver is define and loaded on the page. Next I create my new mutationobserver and then if there are mutations, I wait until they are all finished and run a function.

The problem is is that the script is not create a new mutationobserver.

Here is my typical output, I only make it as far as my first console log.
//poll typeof good

On rare occasion, the mutationobserver will be created and I will get a full load of my logs, but it is 1 out of 10/20 times. I thought it might be a timing issue, but after setting my settimeout to 10 sec, it makes me doubt there is a timing issue.

My only other note is that this is being injected onto the page as the page loads, asynchronously. Not sure if that has anything to do with it, but figured I'd call it out

Any thoughts?

setTimeout(function () {

  if(window.MutationObserver && typeof MutationObserver === 'function'){

  console.log('poll typeof check');

  var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;

       var optFilterSort = new MutationObserver(function(entries) {
       var optEntries = entries.length;
        console.log('poll optEntries ' + optEntries);
        if(entries.length >= optEntries){
          console.log('poll mutations complete');
          optStart();
       }
    });

  var optTargetFilter = document.querySelector(".mydiv");
  var optConfig = {
        attributes: !0,
        childList: !0,
        characterData: !0,
        subtree: !0
    };
  optFilterSort.observe(optTargetFilter,optConfig);
  
  
}

}, 10000);

Upvotes: 0

Views: 1776

Answers (1)

This Guy
This Guy

Reputation: 634

Your "var optFilterSort..." exists only within the context of your function, called with the setTimeout callback function. Your created MutationObserver is effectly deleted once the setTimeout callback function has completed. https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver has an example for setting up a mutation observer object. You should be setting your mutation observer as a variable of the window or within a persisting context.

Upvotes: 1

Related Questions