html位置发生变化监听,用JS实现监听URL地址变化的教程

最近一直在写单页模版,需要使用 js 来监听浏览器地址栏中 url 地址的变化,并做出相应的改变。而这篇文章就来说一说,使用用 JS 代码来监听浏览器地址栏URL地址的变化的方法。

js onhashchange 事件

当前的url地址发生改时(锚点部或参数部分),可以触发 js 中的 onhashchange 事件。

以调用都可以触发 js 的 onhashchange 事件

1、使用不同书签导航到当前页面(使用"后退" 或"前进"按钮)

2、点击链接跳转到书签锚

3、通过设置Location 对象 的 location.hash 或 location.href 属性修改锚部分。

js 监听url址改变的方法教程

例1:直接输写方法

js代码:

window.onhashchange = function () {

console.log('URL发生变化了');

};

例2:在html标签中调用

html代码:html>

Document

function myFunction(){

console.log('url地址被改变了');

}

补充说明:

下面是两个网上流行的示例,大家参考一下吧!

1、使用 addEventListener 事件

js代码:

window.addEventListener("hashchange", myFunction);

function myFunction() {

//要实现的逻辑

}

2、带有浏览器是否支持 onhashchange 事件的例子

js代码:

function hashChangeFire() {

//url改变,调用逻辑

}

// 判断浏览器是否支持onhashchange事件

if (('onhashchange' in window) && ((typeof document.documentMode === 'undefined') || document.documentMode == 8)) {

window.onhashchange = hashChangeFire;

} else {

// 如浏览器不支持onhashchange事件,则用定时器检测的办法

setInterval(function () {

// isHashChanged() 为要检测url是否被改变的函数

var ischanged = isHashChanged();

if (ischanged) {

hashChangeFire(); //如被改变,设用函数

}

}, 150);

}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 HTML5 中的 History API 实现页面地址变化而不进行页面跳转。具体实现方法如下: 1. 使用 pushState() 方法将新的状态(state)添加到浏览器的历史记录中,并修改当前页面的 URL。 ```javascript history.pushState(stateObj, title, url); ``` 其中,stateObj 是一个 JavaScript 对象,用于存储新的状态信息;title 是新页面的标题;url 是新的页面 URL。 2. 监听 popstate 事件,在浏览器的前进或后退按钮被点击时触发。 ```javascript window.addEventListener('popstate', function(event) { // 处理历史记录变化的代码 }); ``` 在 popstate 事件的回调函数中,可以根据新的 stateObj 对象中的信息,动态更新页面内容。 需要注意的是,使用 History API 修改页面 URL 不会导致页面的刷新,因此需要手动处理页面内容的更新。 以下是一个示例代码: ```javascript // 修改 URL history.pushState({page: 'page1'}, 'Page 1', '/page1'); // 监听 popstate 事件 window.addEventListener('popstate', function(event) { // 根据新的 stateObj 对象中的信息,动态更新页面内容 if (event.state.page === 'page1') { // 更新页面内容 } else if (event.state.page === 'page2') { // 更新页面内容 } }); ``` 在上面的示例中,当用户点击浏览器的前进或后退按钮时,会触发 popstate 事件,并根据 event.state 中的信息更新页面内容,从而实现页面地址变化但不进行页面跳转。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值