html5 hashchange,hashchange事件

hashchange事件是html5新增的api,用来监听浏览器链接的hash值变化。

目前流行的spa框架的路由都有使用到该特性,接下来简单介绍下:

当URL的片段标识符更改时,将触发hashchange事件 (跟在#符号后面的URL部分,包括#符号)

属性

类型

描述

target

上下文为window对象

type

event类型

bubbles

事件是否能冒泡

cancelable

事件是否能被取消

oldURL

跳转前的URL

newURL

跳转后的当前URL

下面是一个使用hashchange的一个例子。

function getUUID () {

return Math.floor(Math.random() * 1000000)

}

window.onload = function () {

const el = document.getElementById('toggle')

el.onclick = (e) => {

e.preventDefault()

const uuid = getUUID()

location.hash = '#' + uuid

}

window.onhashchange = (e) => {

console.log('oldURL:', e.oldURL)

console.log('newURL:', e.newURL)

}

}

100242c095e7

hashchange.gif

浏览器兼容性:

Feature

Chrome

Firefox (Gecko)

Internet Explorer

Opera

safari

Basic support

5.0

3.6 (1.9.2)Firefox 6 中加入对 oldURL/newURL 属性的支持.

8.0

10.6

5.0

为了兼容所有浏览器,以下为onhashchange的polyfill:

// 兼容低版本的hashchange

(function(window) {

if ('onhashchange' in window) { return; }

var location = window.location,

oldURL = location.href,

oldHash = location.hash

setInterval(function() {

var newURL = location.href, newHash = location.hash

if (newHash != oldHash && typeof window.onhashchange === 'function') {

window.onhashchange({

type: 'hashchange',

oldURL: oldURL,

newURL: newURL

})

oldURL = newURL

oldHash = newHash

}

}, 100)

})(window)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值