9

私のhtmlが

<a href="#one">One</a>
<a href="#two">Two</a>

Jsは

$(window).on("hashchange"){
alert(document.location.hash);
}

ハッシュ変更前のハッシュ値を取得したいのですが、可能ですか?

4

4 に答える 4

13

それを使う

$(window).on("hashchange", function(e){
    console.log(e.originalEvent.oldURL)
    console.log(e.originalEvent.newURL)
})​;

デモ: http: //jsbin.com/ulumil/

于 2012-07-09T09:12:43.970 に答える
9

たとえば、最後のハッシュを追跡する必要があります。

var currentHash = function() {
  return location.hash.replace(/^#/, '')
}

var last_hash
var hash = currentHash()

$(window).bind('hashchange', function(event){
  last_hash = hash
  hash = currentHash()
  console.log('hash changed from ' + last_hash + ' to ' + hash)
});
于 2012-07-09T09:18:33.713 に答える
2

実際、Amit が提供するソリューションは機能しますが、jquery ライブラリとクロスプラットフォームでも機能します。

これは、コア JavaScript とクロスブラウザも使用した、より単純化されたソリューションです。(最新バージョンのIE/FF/Chrome/Safariで確認)

window.onhashchange = function(e){
  console.log(e);
  var oldURL = e.oldURL; 
  var newURL = e.newURL; 
  console.log("old url = " + oldURL);
  console.log("new url = " + newURL);
  var oldHash = oldURL.split("#")[1];
  var newHash = newURL.split("#")[1];
  console.log(oldHash);
  console.log(newHash);
};
于 2013-03-28T07:57:45.183 に答える