<html> <head> <script> function X() { dump("X\n"); } function Y() { dump("Y\n"); } function boom() { dump("Start9\n"); var div = document.getElementById("v"); var textNode = document.createTextNode(String.fromCharCode(0xDAAF)); // high surrogate div.appendChild(textNode); document.addEventListener("DOMCharacterDataModified", X, true); textNode.data += 'B'; document.removeEventListener("DOMCharacterDataModified", X, true); document.addEventListener("DOMAttrModified", Y, true); textNode.data += String.fromCharCode(0xDF53); // low surrogate document.removeEventListener("DOMAttrModified", Y, true); } </script> </head> <body onload="boom();"><div id="v"></div></body> </html>