<html>
    <head>
        <script>
            function submitFormIfNecessary()
            {
                if (window.location.search)
                    return;
                document.forms[0].submit.click();
            }
        </script>
    </head>
    <body onload="submitFormIfNecessary()">
        <form action="#" method="GET" target="target_frame">
            <input type="text" name="textField" value="text field">
            <input type="password" name="passwordField" value="password field">
            <input type="hidden" name="hiddenField" value="hidden field">
            <input type="submit" name="submit">
        </form>
        <iframe name="target_frame"></iframe>
    </body>
</html>
