监控 url fragment变化的js代码 |
本文标签:url,fragment变化 当然,页面最好不要刷新,但是,拷贝一下浏览器的链接,又希望是下次能定位到你播发的那个视频 。方法很简单,改变一下 url 的 fragment 就可以了 。 监听fragment 的变化是这类编程的核心 。在主流的浏览器(IE firefox)里面 都有一个 onhashchange 的事件监听 fragment 的变化 。 但是,他们的行为有些差异 。在IE8 以前的 IE版本里面,当 window.location 对象迅速变化的情况下,onhashchange 不会触发,非常奇怪的bug 。 下面我写的 onhashchange 事件 没有浏览器的差异 。并且加入了一个功能,页面初始化的时候,如果 url 中 有 fragment ,也触发一下 onhashchange 事件 。 复制代码 代码如下: function addFragmentChangeEvent(callback) { var source = document.URL; var url = source.split("#")[0]; if (window.location.hash) { var base_hash = "#____base____hash____";//改变hash,使得页面初始化的时候触发一下事件函数 。 window.location = url + base_hash; } var prevHash = window.location.hash; window.setInterval( function() { if (window.location.hash != prevHash) { prevHash = window.location.hash; callback(prevHash); } }, 100); if (window.location.hash) { window.location = source; } } 其实这个技巧是js 中间常用的技巧,模拟一个事件的作用 。 |