chromium/third_party/blink/web_tests/fast/events/event-fired-after-removal.html

<p>This page verifies that queued event listeners keep firing even after a node has been removed from the document.</p>
<p>If the test passes, you'll see a PASS message below.</p>

<pre id="console"></pre>

<div id="div"></div>

<script>
if (window.testRunner)
    testRunner.dumpAsText();

function log(s)
{
    document.getElementById("console").appendChild(document.createTextNode(s + "\n"));
}

var result = [ ];

function reportResult(expected)
{
    var passed = true;
    var end = result.length > expected.length ? result.length : expected.length;
    for (var i = 0; i < end; ++i) {
        if (result[i] != expected[i]) {
            log("FAIL: " + name + " result[" + i + "] should be " + expected[i] + " but instead is " + result[i] + ".");
            passed = false;
        }
    }
    if (passed)
        log("PASS: result should be " + expected + " and is.");
}

var div = document.getElementById("div");
div.addEventListener("click", function f1() {
    result.push(arguments.callee.name);
    div.parentNode.removeChild(div);
}, false);

div.addEventListener("click", function f2() {
    result.push(arguments.callee.name);
}, false);

var event = document.createEvent("MouseEvent");
event.initMouseEvent("click", true, true, document.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, document);
div.dispatchEvent(event);

reportResult([ "f1", "f2" ]);
</script>