Window:hashchange 事件

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

当 URL 的片段标识符(URL 中以 # 符号开头的部分)发生变化时,会触发 hashchange 事件。

使用 history.pushState()history.replaceState() 修改哈希值时,不会触发此事件。

语法

在诸如 addEventListener() 之类的方法中使用事件名称,或设置事件处理程序属性。

js
addEventListener("hashchange", (event) => { })

onhashchange = (event) => { }

事件类型

一个 HashChangeEvent。继承自 Event

Event HashChangeEvent

事件属性

HashChangeEvent.newURL 只读

一个字符串,表示窗口正在导航到的新 URL。

HashChangeEvent.oldURL 只读

一个字符串,表示窗口从中导航到的前一个 URL。

事件处理程序别名

除了 Window 接口之外,以下目标也可用事件处理属性 onhashchange

示例

您可以在 addEventListener 方法中使用 hashchange 事件

js
window.addEventListener("hashchange", () => {
  console.log("The hash has changed!");
});

或者使用 onhashchange 事件处理属性

js
function locationHashChanged() {
  if (location.hash === "#cool-feature") {
    console.log("You're visiting a cool feature!");
  }
}

window.onhashchange = locationHashChanged;

规范

规范
HTML
# event-hashchange
HTML
# handler-window-onhashchange

浏览器兼容性

另见