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

Initial Value
foo
Value set by User that should be Restored
bar



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