64 lines
1.5 KiB
HTML
64 lines
1.5 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<body>
|
|
<script src="../../../resources/js-test-pre.js"></script>
|
|
<div id="description"></div>
|
|
<pre id="console"></pre>
|
|
<script>
|
|
description('Tests that popstate events fire for all history traversals (including navigation to fragments), not just when going back to a state object created via pushState.');
|
|
|
|
onload = function()
|
|
{
|
|
setTimeout(step, 0);
|
|
}
|
|
|
|
var currentStep = 0;
|
|
var popstateFireCount = 0;
|
|
|
|
function step()
|
|
{
|
|
switch (currentStep) {
|
|
case 0:
|
|
debug('setting hash to #state1');
|
|
location.hash = '#state1';
|
|
break;
|
|
case 1:
|
|
debug('setting hash to #state2');
|
|
location.hash = '#state2';
|
|
break;
|
|
case 2:
|
|
debug('going back');
|
|
history.back();
|
|
break;
|
|
case 3:
|
|
debug('going back');
|
|
history.back();
|
|
break;
|
|
case 4:
|
|
// The 5 expected popstate events are when:
|
|
// 1. The page loads
|
|
// 2. Navigating to #state1
|
|
// 3. Navigating to #state2
|
|
// 4. Going back to #state1
|
|
// 5. Going back to the initial page state
|
|
shouldBe('popstateFireCount', '4');
|
|
finishJSTest();
|
|
return;
|
|
default:
|
|
testFailed('unexpected state: ' + currentStep);
|
|
break;
|
|
}
|
|
|
|
currentStep++;
|
|
}
|
|
|
|
onpopstate = function(event)
|
|
{
|
|
debug('popstate fired with state ' + event.state);
|
|
popstateFireCount++;
|
|
setTimeout(step, 0);
|
|
}
|
|
var jsTestIsAsync = true;
|
|
</script>
|
|
<script src="../../../resources/js-test-post.js"></script>
|
|
</html> |