一、什么是hash?如何获取hash?
hash 是 HTML DOM location 对象的一个属性,它是存储 URL 锚部分(从 # 号开始的部分)的一个字符串。hash的变化不会引起浏览器的重新刷新,具体获取hash的代码如下:
var hash = window.location.hash;
需要注意的是firefox会对location.hash获取的字符串进行解码,如果有相关操作请使用以下代码:
var url = window.location.href; var index = url.indexOf(‘#‘); var hash = index == -1 ? ‘‘ : url.slice(index); return hash;
二、监听hash执行相应逻辑
javascript提供了事件hashchange来进行对hash的监听,该事件对象下有两个属性:oldURL与newURL。应该注意的是该事件只兼容IE8+的IE浏览器,所以下面我们使用脚本模拟该事件,在window.onhashchange上绑定事件处理函数。
(function(window) { // 自执行匿名函数 // 如果浏览器原生支持该事件,则退出 if ( "onhashchange" in window.document.body ) { return; } var location = window.location, oldURL = location.href, oldHash = location.hash; // 每隔100ms检测一下location.hash是否发生变化 setInterval(function() { var newURL = location.href, newHash = location.hash; // 如果hash发生了变化,且绑定了处理函数... if ( newHash != oldHash && typeof window.onhashchange === "function" ) { // execute the handler window.onhashchange({ type: "hashchange", oldURL: oldURL, newURL: newURL }); oldURL = newURL; oldHash = newHash; } }, 100); })(window);
时间: 2024-10-27 06:03:22