location.hash and history.replaceState
<p>I have an issue with binding to window.hashchange. When calling <code>history.replaceState</code>, it triggers the 'hashchange' event unless a call has been made to <code>location.hash</code>. I am using Chrome 42, and jQuery to assist the binding. I have Sammy.js loaded (and I am actually trying to work out how Sammy would interpret the behaviour)</p>

<p>I am debugging in the console, and doing the following:</p>

<p><code>$(window).bind('hashchange', function(e) { alert('# change' + location.hash); });</code></p>

<p><code>history.replaceState({}, "", "#2")</code> --> <strong>shows the alert</strong></p>

<p><code>location.hash = "3"</code> --> shows the alert</p>

<p><code>history.replaceState({}, "", "#4")</code> --> <strong>does not show alert</strong></p>

<p>Is this a bug, or expected behaviour? I would have thought that replaceState either always, or never triggered the 'hashchange' event</p>