Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

<title>Test for Bug 504220</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<script src="/tests/SimpleTest/EventUtils.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
<body onload="run_test();">
<a target="_blank" href="">Mozilla Bug 504220</a>
<p id="display"></p>
<div id="content">
<iframe id="frame" style="height:100px; width:100px; border:0"></iframe>
<div id="status" style="display: none"></div>
<pre id="test">
<script type="application/javascript">
/** Test for Bug 504220 **/
function run_test() {
ok("onhashchange" in document.body,
"document.body should contain 'onhashchange'.");
ok("onhashchange" in window, "window should contain 'onhashchange'.");
// window.onhashchange should mirror document.body.onhashchange.
var func = function() { return 42; };
document.body.onhashchange = func;
is(window.onhashchange, func);
// Likewise, document.body.hashchange should mirror window.onhashchange
numEvents = 0;
var func2 = function() { numEvents++; };
window.onhashchange = func2;
is(document.body.onhashchange, func2);
function* waitForHashchange() {
// Change the document's hash. If we've been running this test manually,
// the hash might already be "#foo", so we need to check in order to be
// sure we trigger a hashchange.
if (location.hash != "#foo")
location.hash = "#foo";
location.hash = "#bar";
yield undefined;
is(numEvents, 1, "Exactly one hashchange should have been fired.");
var gGen = waitForHashchange();;