<!DOCTYPE HTML> <meta charset=utf-8> <title>MutationObservers: disconnect</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <h1>MutationObservers: disconnect</h1> <div id="log"></div> <section style="display: none"> <p id='n00'></p> </section> <script> var n00 = document.getElementById('n00'); var parentTest = async_test("subtree mutations"); function masterMO(sequence, obs) { parentTest.step(function() { assert_equals(sequence.length, 4, "mutation records must match"); }); parentTest.done(); } parentTest.step(function() { (new MutationObserver(masterMO)).observe(n00.parentNode, {"subtree": true, "attributes": true}); }); var disconnectTest = async_test("disconnect discarded some mutations"); function observerCallback(sequence, obs) { disconnectTest.step(function() { assert_equals(sequence.length, 1); assert_equals(sequence[0].type, "attributes"); assert_equals(sequence[0].attributeName, "id"); assert_equals(sequence[0].oldValue, "latest"); disconnectTest.done(); }); } var observer; disconnectTest.step(function() { observer = new MutationObserver(observerCallback); observer.observe(n00, {"attributes": true}); n00.id = "foo"; n00.id = "bar"; observer.disconnect(); observer.observe(n00, {"attributes": true, "attributeOldValue": true}); n00.id = "latest"; observer.disconnect(); observer.observe(n00, {"attributes": true, "attributeOldValue": true}); n00.id = "n0000"; }); </script>