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/javascriptlink-goback.html  **nav target**
        http://127.0.0.1:8000/navigation/resources/javascriptlink.html  **nav target**
curr->  http://127.0.0.1:8000/navigation/resources/success200.html  **nav target**
        http://127.0.0.1:8000/navigation/resources/otherpage.html  **nav target**
===============================================
