onhashchange 事件
onhashchange 事件
实例
锚部分改变后执行 JavaScript:
<body onhashchange="myFunction()">
完整实例:
<!DOCTYPE html> <html> <body onhashchange="myFunction()"> <p>点击按钮将当前网址的锚部分改为 #part5</p> <button onclick="changePart()">试一试</button> <p id="demo"></p> <script> // 使用 location.hash 属性更改锚部分 function changePart() { location.hash = "part5"; var x = location.hash; document.getElementById("demo").innerHTML = "The anchor part is now: " + x; } // 如果锚部分发生改变,则提示一些文本 function myFunction() { alert("The anchor part has changed!"); } </script> </body> </html>
可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html
页面下方有更多 TIY 实例。
定义和用法
当目前 URL 的锚部分(以 '#' 符号开头)发生改变时,会发生 onhashchange 事件。
有关什么是锚部分的一个例子:假设当前的 URL 是 http://www.example.com/test.htm#part2 - 此 URL 的锚部分将是 #part2。
如需调用此事件,您可以:
- 通过设置 Location 对象的 location.hash 或 location.href 属性来改变锚部分
- 使用不同的书签导航到当前页面(使用“后退”或“前进”按钮)
- 单击指向书签锚点的链接
浏览器支持
表中的数字注明了完全支持该事件的首个浏览器版本。
事件 | Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|---|
onhashchange | 5.0 | 8.0 | 3.6 | 5.0 | 10.6 |
语法
在 HTML 中:
<element onhashchange="myScript">
完整实例:
<!DOCTYPE html> <html> <body onhashchange="myFunction()"> <p>本例演示如何将 "onhashchange" 事件分配给 body 元素。</p> <p>点击按钮将当前网址的锚部分改为 #part5</p> <button onclick="changePart()">试一试</button> <p id="demo"></p> <script> // 使用 location.hash 属性更改锚点部分 function changePart() { location.hash = "part5"; var x = location.hash; document.getElementById("demo").innerHTML = "The anchor part is now: " + x; } // 如果锚部分发生改变,则提示一些文本 function myFunction() { alert("The anchor part has changed!"); } </script> </body> </html>
可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html
在 JavaScript 中:
object.onhashchange = function(){myScript};
完整实例:
<!DOCTYPE html> <html> <body> <p>本例使用 HTML DOM 将 "onhashchange" 事件分配给 body 元素。</p> <p>点击按钮将当前网址的锚部分改为 #part5</p> <button onclick="changePart()">试一试</button> <p id="demo"></p> <script> // 使用 location.hash 属性更改锚点部分 function changePart() { location.hash = "part5"; var x = location.hash; document.getElementById("demo").innerHTML = "The anchor part is now: " + x; } document.getElementsByTagName("BODY")[0].onhashchange = function() {myFunction()}; function myFunction() { alert("The anchor part has changed!"); } </script> </body> </html>
可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html
在 JavaScript 中,使用 addEventListener() 方法:
object.addEventListener("hashchange", myScript);
完整实例:
<!DOCTYPE html> <html> <body> <p>本例使用 addEventListener() 方法将 "hashchange" 事件附加到 window 对象。</p> <p>点击按钮将当前网址的锚部分改为 #part5</p> <button onclick="changePart()">试一试</button> <p id="demo"></p> <script> // 使用 location.hash 属性更改锚部分 function changePart() { location.hash = "part5"; var x = location.hash; document.getElementById("demo").innerHTML = "The anchor part is now: " + x; } window.addEventListener("hashchange", myFunction); function myFunction() { alert("The anchor part has changed!"); } </script> </body> </html>
可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html
注释:Internet Explorer 8 或更早的版本不支持 addEventListener() 方法。
技术细节
冒泡: | 支持 |
---|---|
可取消: | 不支持 |
事件类型: | HashChangeEvent |
支持的 HTML 标签: | <body> |
DOM 版本: | Level 3 Events |
更多实例
示例代码:
如何将 "onhashchange" 事件分配给 window 对象:
window.onhashchange = myFunction;
完整实例:
<!DOCTYPE html> <html> <body> <p>本例演示如何将 "onhashchange" 事件分配给 window 对象。</p> <p>点击按钮将当前网址的锚部分改为 #part5</p> <button onclick="changePart()">试一试</button> <p id="demo"></p> <script> // 使用 location.hash 属性更改锚点部分 function changePart() { location.hash = "part5"; var x = location.hash; document.getElementById("demo").innerHTML = "The anchor part is now: " + x; } window.onhashchange = myFunction; function myFunction() { alert("The anchor part has changed!"); } </script> </body> </html>
可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html