<script>
function test()
{
    if (!window.testRunner)
        return;

    testRunner.dumpAsText();
    testRunner.waitUntilDone();

    var element = document.getElementById("elem");
    element.focus();
    element.onchange();
}
function failed()
{
    document.getElementById("console").innerHTML = "blur event fired, FAILED!";
    window.location = 'resources/no-blur-result.html/#FAILED';
    testRunner.notifyDone();
}

</script>
<body onload="test();">
onblur should not fire if an element has focus when navigating away from the page<br>
<a href="rdar://problem/5326303">rdar://problem/5326303</a><br>
<select id="elem" onchange="window.location='resources/no-blur-result.html';" onblur="failed()">
<option>CHANGE ME</option>
<option>PICK ME</option>
</select>
<pre id=console>
</pre>
</body>
