2009-07-15 15:46:14 -07:00
|
|
|
<!DOCTYPE HTML>
|
|
|
|
<html>
|
|
|
|
<!--
|
|
|
|
https://bugzilla.mozilla.org/show_bug.cgi?id=504220
|
|
|
|
-->
|
|
|
|
<head>
|
|
|
|
<title>Test for Bug 504220</title>
|
|
|
|
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
|
|
<script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
|
|
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
|
|
</head>
|
|
|
|
<body onload="run_test();">
|
|
|
|
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=504220">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>
|
|
|
|
</div>
|
|
|
|
<pre id="test">
|
|
|
|
<script type="application/javascript;version=1.7">
|
|
|
|
|
|
|
|
/** 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;
|
2010-11-29 11:13:12 -08:00
|
|
|
var func2 = function() { numEvents++; gGen.next() };
|
2009-07-15 15:46:14 -07:00
|
|
|
window.onhashchange = func2;
|
|
|
|
is(document.body.onhashchange, func2);
|
|
|
|
|
2010-11-29 11:13:12 -08:00
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
|
|
|
|
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";
|
|
|
|
else
|
|
|
|
location.hash = "#bar";
|
|
|
|
|
|
|
|
yield;
|
|
|
|
|
|
|
|
is(numEvents, 1, "Exactly one hashchange should have been fired.");
|
|
|
|
SimpleTest.finish();
|
|
|
|
yield;
|
|
|
|
}
|
2009-07-15 15:46:14 -07:00
|
|
|
|
2010-11-29 11:13:12 -08:00
|
|
|
var gGen = waitForHashchange();
|
|
|
|
gGen.next();
|
2009-07-15 15:46:14 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
</script>
|
|
|
|
</pre>
|
|
|
|
</body>
|
|
|
|
</html>
|