--- title: window.onhashchange slug: Web/API/Window/onhashchange tags: - HTML-DOM - Property - Reference - WindowEventHandlers translation_of: Web/API/WindowEventHandlers/onhashchange ---

{{APIRef("HTML DOM")}}

当 一个窗口的 hash (URL 中 # 后面的部分)改变时就会触发 hashchange 事件(参见 {{domxref("Window.location", "location.hash")}})。

语法

window.onhashchange = funcRef;

或者

<body onhashchange="funcRef();">

以上操作将覆盖现有的事件处理程序。

为了添加一个新的事件处理程序,而不覆盖掉已有的其他事件处理程序,可以使用函数 "addEventListener"

window.addEventListener("hashchange", funcRef, false);

参数

funcRef
对一个函数的引用。

例子

if ("onhashchange" in window) {
    alert("该浏览器支持 hashchange 事件!");
}

function locationHashChanged() {
    if (location.hash === "#somecoolfeature") {
        somecoolfeature();
    }
}

window.onhashchange = locationHashChanged;

hashchange 事件

hashchange 事件对象有下面两个属性:

属性 类型 描述
newURL {{ gecko_minversion_inline("6.0") }} DOMString 当前页面新的URL
oldURL {{ gecko_minversion_inline("6.0") }} DOMString 当前页面旧的URL

Workaround for event.newURL and event.oldURL

//let this snippet run before your hashchange event binding code
if(!window.HashChangeEvent)(function(){
	var lastURL=document.URL;
	window.addEventListener("hashchange",function(event){
		Object.defineProperty(event,"oldURL",{enumerable:true,configurable:true,value:lastURL});
		Object.defineProperty(event,"newURL",{enumerable:true,configurable:true,value:document.URL});
		lastURL=document.URL;
	});
}());

规范

Specification Status Comment
{{SpecName('HTML WHATWG', '#windoweventhandlers', 'GlobalEventHandlers')}} {{Spec2('HTML WHATWG')}}  
{{SpecName('HTML5.1', '#windoweventhandlers', 'GlobalEventHandlers')}} {{Spec2('HTML5.1')}}  
{{SpecName("HTML5 W3C", "#windoweventhandlers", "GlobalEventHandlers")}} {{Spec2('HTML5 W3C')}}  

浏览器兼容性

{{Compat("api.WindowEventHandlers.onhashchange")}}