<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}
function eventhandler1() {
txt.appendChild(kg);
}

function eventhandler2() {
anim.appendChild(kg);
}

function eventhandler3() {
table.scrollIntoView(true);
testRunner.notifyDone();
}

</script>
<body onload="eventhandler3()">
This test passes if it doesn't assert or crash.
<table id="table"></table>
<form>
<input id="kg" autofocus="autofocus">
</form>
<svg>
<animate id="anim" attributeName="text-anchor" from="middle" to="inherit" onbegin="eventhandler1()" />
<text id="txt">
<font color="white"></font>
<select onfocus="eventhandler2()" autofocus="autofocus">
<textarea>a</textarea>
<iframe onload="eventhandler1()"></iframe>
