关于 window.onhashchange 和 window.addEventListener('hashchange'

来源:4-21 如何用JS实现hash路由

一爿

2020-10-21

经过测试发现(我是MacOS环境)
在谷歌浏览器中,以下两种写法都有效,但是在火狐浏览器中必须得用后者的写法

// 谷歌有效,火狐无效
window.onhashchange = (event) => {
  console.log(`old url:${event.oldURL}`)
  console.log(`new url:${event.newURL}`)
  console.log(`hash:${location.hash}`)
}

// 谷歌、火狐浏览器都有效
window.addEventListener('hashchange', (event) => {
  console.log(`old url:${event.oldURL}`)
  console.log(`new url:${event.newURL}`)
  console.log(`hash:${location.hash}`)
})
写回答

1回答

双越

2020-10-21

感谢反馈。火狐确实有一些兼容性问题。

不过,好在我们是做 hash 路由的一个原理学习,并不是真正开发一个 router 库,所以兼容性不用考虑那么全面。

1
0

前端框架及项目面试 聚焦Vue3/React/Webpack

面向1-3年前端的框架及项目面试“刚需内容”

4706 学习 · 1669 问题

查看课程