| <!DOCTYPE html> |
| <html> |
| <body> |
| <script src="../../resources/js-test-pre.js"></script> |
| <div id="description"></div> |
| <pre id="console"></pre> |
| <script> |
| description('Tests that hashchange events have the expected newURL and oldURL properties.'); |
| |
| function hashOf(url) |
| { |
| var hashIndex = url.lastIndexOf('#'); |
| return hashIndex != -1 ? url.substring(hashIndex) : '[none]'; |
| } |
| |
| var goingForward = true; |
| |
| onload = function() |
| { |
| setTimeout(function() {location.href = '#state1';}, 0); |
| }; |
| |
| onhashchange = function(event) |
| { |
| debug('hashchange fired with oldURL hash "' + hashOf(event.oldURL) + '" and newURL hash "' + hashOf(event.newURL) + '"'); |
| |
| switch (hashOf(event.newURL)) { |
| case '#state1': |
| if (goingForward) |
| location.href = '#state2'; |
| else |
| history.back(); |
| break; |
| case '#state2': |
| if (goingForward) { |
| goingForward = false; |
| history.back(); |
| } else { |
| testFailed('should always be going forward at #state2'); |
| } |
| break; |
| case '[none]': |
| finishJSTest(); |
| break; |
| } |
| }; |
| var jsTestIsAsync = true; |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </html> |