--- title: WindowEventHandlers.onhashchange slug: Web/API/WindowEventHandlers/onhashchange tags: - Event Handler - HTML DOM - Hash - Property - Reference - URL & Hash - WindowEventHandlers translation_of: Web/API/WindowEventHandlers/onhashchange ---
{{domxref("WindowEventHandlers")}} ミックスインの onhashchange
プロパティは、hashchange
イベントを処理するための {{event("Event_handlers", "event handler")}} です。
hashchange
イベントは、ウィンドウのハッシュが変更されると発生します({{domxref("Window.location")}} および {{domxref("HTMLHyperlinkElementUtils.hash")}} を参照)。
イベントハンドラの使用
window.onhashchange = funcRef;
HTML イベントハンドラの使用
<body onhashchange="funcRef();">
イベントリスナーの使用
イベントリスナーを追加するには、{{domxref("EventTarget.addEventListener()", "addEventListener()")}} を使用します。
window.addEventListener("hashchange", funcRef, false);
funcRef
この例では、イベントハンドラ(window.onhashchange
)を使用して、新しいハッシュ値が変更されるたびにチェックします。 それが #cool-feature
と等しい場合、スクリプトはコンソールにメッセージを記録します。
function locationHashChanged() { if (location.hash === '#cool-feature') { console.log("あなたはクールな機能を訪れています!"); } } window.onhashchange = locationHashChanged;
この例では、イベントリスナーを使用して、ハッシュが変更されるたびに通知を記録します。
function hashHandler() { console.log('ハッシュが変更されました!'); } window.addEventListener('hashchange', hashHandler, false);
この関数は、新しいハッシュを動的に設定し、2つの値のいずれかにランダムに設定します。
function changeHash() { location.hash = (Math.random() > 0.5) ? 'location1' : 'location2'; }
送出された hashchange
イベントには、次のプロパティがあります。
フィールド | 型 | 説明 |
newURL |
DOMString |
ウィンドウがナビゲートされた新しい URL。 |
oldURL |
DOMString |
ウィンドウがナビゲートされる前の URL。 |
// hashchange イベントを登録するコードの前にこのスニペットを実行してください 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; }); }());
仕様 | 状態 | コメント |
---|---|---|
{{SpecName('HTML WHATWG', '#handler-window-onhashchange', 'onhashchange')}} | {{Spec2('HTML WHATWG')}} | |
{{SpecName('HTML5.1', '#windoweventhandlers', 'GlobalEventHandlers')}} | {{Spec2('HTML5.1')}} | |
{{SpecName("HTML5 W3C", "#windoweventhandlers", "GlobalEventHandlers")}} | {{Spec2('HTML5 W3C')}} |
{{Compat("api.WindowEventHandlers.onhashchange")}}
hashchange
イベントhistory.pushState()
メソッドと history.replaceState()
メソッド