<html id="HTML"> <body id="Body"> <p>This tests the target, currentEvent, and phase of a complete trace through event bubbling and capture.</p> <pre id="console"></pre> <br> <div id="Parent" style="background-color:lightblue;border:1px solid #000000; padding: 10px; margin: 10px;"> Parent <div id="Self" style="background-color:blue; border:1px solid black; padding: 10px; margin: 10px;"> Self </div> </div> <script> if (window.testRunner) testRunner.dumpAsText(); function log(msg) { document.getElementById('console').appendChild(document.createTextNode(msg + "\n")); } function traceEvent(event) { function targetString(target) { if (!target) return "No Target"; if (target instanceof window.Element) return target.toString() + " (ID: " + target.id + ")"; return target.toString(); } function phaseString(eventPhase) { if (eventPhase == Event.NONE) return "NONE"; else if (eventPhase == Event.CAPTURING_PHASE) return "CAPTURE"; else if (eventPhase == Event.BUBBLING_PHASE) return "BUBBLE"; else if (eventPhase == Event.AT_TARGET) return "AT TARGET"; } var target = targetString(event.target); var currentTarget = targetString(event.currentTarget); var phase = phaseString(event.eventPhase); log("Target = " + target + "; Phase = " + phase + "; CurrentTarget = " + currentTarget + ";"); } window.addEventListener("customevent", traceEvent, true); document.addEventListener("customevent", traceEvent, true); document.getElementById("HTML").addEventListener("customevent", traceEvent, true); document.getElementById("Body").addEventListener("customevent", traceEvent, true); document.getElementById("Parent").addEventListener("customevent", traceEvent, true); document.getElementById("Self").addEventListener("customevent", traceEvent, true); window.addEventListener("customevent", traceEvent, false); document.addEventListener("customevent", traceEvent, false); document.getElementById("HTML").addEventListener("customevent", traceEvent, false); document.getElementById("Body").addEventListener("customevent", traceEvent, false); document.getElementById("Parent").addEventListener("customevent", traceEvent, false); document.getElementById("Self").addEventListener("customevent", traceEvent, false); var theEvent = document.createEvent("Event"); theEvent.initEvent("customevent", true, true); // Trace before dispatch. traceEvent(theEvent); document.getElementById("Self").dispatchEvent(theEvent); </script> </body> </html>