<html>
<head>
<script>
function unload() { 
    window.parent.imageLoad();
}

function load() {
    window.top.test();
}
</script>
</head>
<body onload="load();" onunload="unload();">
This subframe has an unload handler.
</body>
</html>
