2012-03-20 6 views
1

ハッシュタグがtwoBに終了した場合、ページが更新されたときにアラートを発動すれば、以下の通り:urlにハッシュタグがあり、ユーザーがブラウザで前後にナビゲートした場合のJavaScript関数ですか?

if (window.location.href.match(/\#twoB/)) 
{ 
    alert('twoB'); 
} 

問題があることあなたは、いくつかのハッシュタグをクリックすると、ブラウザに戻ってクリックしてしまった場合、 URLにはハッシュが含まれていますが、アラートは起動しません。ユーザーがブラウザを使用してコードを実行した後でコードを実行するにはどうすればよいでしょうか。

私はこのプロジェクトにjQueryを使用していますので、構文が簡単な場合は理想的な世界でjQueryソリューションを使いたいと思います。

+4

多くのjQuery履歴プラグインの1つを探しています。 – Brad

+0

これを行うネイティブな方法はありませんか? 1つの機能にライブラリを使用することができない場合は、ライブラリを使用することに恥ずかしいと思われます。ありがとう – Evans

+0

@jdn https://developer.mozilla.org/en/DOM/Manipulating_the_browser_historyを参照してください – Phrogz

答えて

0

最初に、setIntervalを使用してURLを繰り返し確認するという非常に醜い方法を解決しました。 HTML5s onpopstateは、ページが最初にロードされたときに実行され、その後、すべての前方および後方のナビゲーションも実行されます。

window.onpopstate = function(){ 
    if (window.location.href.match(/\#twoB/)) 
    { 
    alert('twoB'); 
    } 
} 
3
$(window).on("hashchange", function() { 
    console.log("hash is now " + window.location.hash); 
}); 

jQuery 1.7にはonが追加されています。古いバージョンを使用している場合は、代わりに$(window).bindを実行してください。

+0

私のためには機能しません。おかげで – Evans

+0

ちょうどそれはまた、それ以下のJavaScriptを壊すことに気づいた。構文エラーはありますか?アイブはあなたのコードを正確に追加しただけですが、 "hashchange"などを定義する必要はありますか?ありがとう – Evans

+0

うーん、いいえ、それは動作するはずです...私は '$'グローバルとしてjQueryを持っていると仮定していますか? – Domenic

0

なぜhref.matchの代わりにlocation.hashを使用しないのですか?ハッシュを取得するだけで、マッチを行う必要はないので、location.hashは高速にする必要があります。

+0

これは私の問題を解決するか、単にパフォーマンスを改善しますか?先端に感謝します。 – Evans

関連する問題