这篇文章主要用代码详解js实现无刷新监听URL的变化,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

专注于为中小企业提供网站建设、网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业平原免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
无刷新改变路由的两种方法通过hash改变路由
代码
window.location.hash='edit'
效果
http://xxxx/#edit
通过history改变路由
监听url变化
监听hash变化
window.onhashchange=function(event){
console.log(event);
}
//或者
window.addEventListener('hashchange',function(event){
console.log(event);
})监听back/forward/go
如果是history.back(),history.forward()、history.go()那么会触发popstate事件
window.addEventListener('popstate', function(event) {
console.log(event);
})但是,history.pushState()和history.replaceState()不会触发popstate事件,所以需要自己手动增加事件
监听pushState/replaceState
history.replaceState和pushState不会触发popstate事件,那么如何监听这两个行为呢。可以通过在方法里面主动的去触发popstate事件。另一种就是在方法中创建一个新的全局事件。
改造
const _historyWrap = function(type) {
const orig = history[type];
const e = new Event(type);
return function() {
const rv = orig.apply(this, arguments);
e.arguments = arguments;
window.dispatchEvent(e);
return rv;
};
};
history.pushState = _historyWrap('pushState');
history.replaceState = _historyWrap('replaceState');监听
window.addEventListener('pushState', function(e) {
console.log('change pushState');
});
window.addEventListener('replaceState', function(e) {
console.log('change replaceState');
});看完上述内容,是不是对用代码详解js实现无刷新监听URL的变化有进一步的了解,如果还想学习更多内容,欢迎关注创新互联行业资讯频道。
Copyright © 2009-2022 www.wtcwzsj.com 青羊区广皓图文设计工作室(个体工商户) 版权所有 蜀ICP备19037934号