mirror of
https://github.com/servo/servo
synced 2026-04-29 19:07:38 +02:00
Interactive test for fragid resolution.
Added HTML tests for scrolling to fragid
Applied algorithm from whatwg spec
https://html.spec.whatwg.org/multipage/#the-indicated-part-of-the-document
Changes following code review
60 lines
1.6 KiB
HTML
60 lines
1.6 KiB
HTML
<!doctype html>
|
|
<title>Fragment Navigation: fragment id should be percent-decoded</title>
|
|
<meta name=timeout content=long>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<body>
|
|
<div></div>
|
|
<div id="has two spaces" style="position:absolute; top:200px;"></div>
|
|
<div id="escape%20collision" style="position:absolute; top:300px;"></div>
|
|
<div id="escape collision" style="position:absolute; top:400px;"></div>
|
|
<div id="do%20not%20go%20here" style="position:absolute; top:400px;"></div>
|
|
<div style="height:200em;"></div>
|
|
<script>
|
|
var steps = [{
|
|
fragid:'has%20two%20spaces',
|
|
handler: function(){
|
|
assert_equals( scrollPosition(), 200 );
|
|
}
|
|
},{
|
|
fragid:'escape%20collision',
|
|
handler: function(){
|
|
assert_equals( scrollPosition(), 400 );
|
|
}
|
|
},{
|
|
fragid:'do%20not%20go%20here',
|
|
handler: function(){
|
|
// don't move
|
|
assert_equals( scrollPosition(), 400 );
|
|
}
|
|
}];
|
|
|
|
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>
|