This is test page that we navigate to as part of testing various navigation styles. It includes a form so that we can test saving and restoring of form data, and it needs to be long enough that we can test saving and restoring of scroll position.




Here are some form elements
that we can use for testing
 Male
 Female
 option #1
 option #2


Now

some

filler

so

the

doc

is

long

enough

to scroll.

This is an anchor point named "anchor1".

============== Back Forward List ==============
        http://127.0.0.1:8000/navigation/postredirect-goback2.html  **nav target**
curr->  http://127.0.0.1:8000/navigation/resources/success200.html  **nav target**
        http://127.0.0.1:8000/navigation/resources/postresult.pl?submitwithpostredirect=Submit%20with%20POST%20followed%20by%20a%20redirect&textfield1=New%20form%20text%20from%20user&textfield2=&radiogroup1=female&checkbox2=on&selectgroup1=fiat&textarea1=More%20new%20form%20text%20from%20user%2C%20which%20should%20be%20restored%20when%20we%20return%20to%20this%20page.&redirectHappened=true  **nav target**
        http://127.0.0.1:8000/navigation/resources/otherpage.html  **nav target**
===============================================
