Alex
Alex

Reputation: 68104

DOM change event for Opera

So far I found how to do it in Chrome, the DOMSubtreeModified event: Is there a JavaScript/jQuery DOM change listener?

Apparently it works in Firefox and IE 9 too.

Do you know solutions for detecting DOM changes in other browsers such as Opera? And maybe older versions if IE, because I'm sure the event above doesn't work in IE 6-7-8...

Or do you know other events I could use? I'm basically looking for a way to detect if certain elements have been inserted in the document trough ajax requests...

Upvotes: 3

Views: 790

Answers (2)

Paul Sweatte
Paul Sweatte

Reputation: 24617

onreadystatechange will work in IE8 and below. A DHTML behavior must be attached to the element via htc, but the htc file does not have to exist:

if (!!document.addEventListener)
  {
  $(document.documentElement).get(0).addEventListener("DOMNodeInserted", bar, false);
  }
else
  {
  $(document.documentElement).get(0).addBehavior("foo.htc");
  $(document.documentElement).get(0).attachEvent("onreadystatechange", bar);
  }

Upvotes: 1

marcio
marcio

Reputation: 10512

Opera supports the DOMNodeInserted and DOMNodeRemoved mutation events. I tested and they worked on Firefox and G. Chrome too.

$(document).bind("DOMNodeInserted, DOMNodeRemoved", function() {
    alert("DOM changed");
});

If you're targeting multiple browsers, maybe you could check if Mordenizr has any detection for DOM mutation events support, it could help you a lot to simplify these decisions.

Upvotes: 3

Related Questions