| <!doctype html> |
| <title>Fragment Navigation: TOP is a valid element id, which overrides navigating to top of the document</title> |
| <meta name=timeout content=long> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <body> |
| <div></div> |
| <div id="Top" style="position:absolute; top:200px;"></div> |
| <div style="height:200em; position:relative;"></div> |
| <script> |
| var steps = [{ |
| fragid:'Top', |
| handler: function(){ |
| assert_equals( scrollPosition(), 200 ); |
| } |
| },{ |
| // scroling to top should work when fragid differs from id by case. |
| fragid:'top', |
| handler: function(){ |
| assert_equals( scrollPosition(), 0 ); |
| } |
| }]; |
| |
| function scrollPosition(){ |
| return document.documentElement.scrollTop || document.body.scrollTop; |
| } |
| |
| function runNextStep(){ |
| if( steps.length > 0 ) { |
| var step = steps.shift(); |
| var listener = t.step_func( function(){ |
| step.handler(); |
| runNextStep(); |
| }); |
| scrollToFragmentThenDo( step.fragid, listener ); |
| } else { |
| t.done(); |
| } |
| } |
| |
| function scrollToFragmentThenDo( fragid, then ){ |
| location.hash = fragid; |
| setTimeout( then, 1 ); |
| } |
| |
| var t = async_test(); |
| t.step( function(){ |
| assert_equals(location.hash, "", "Page must be loaded with no hash"); |
| runNextStep(); |
| }) |
| </script> |