2012-02-03 9 views
1

History.jsを使用して、私のウェブサイトの検索結果をAJAXで実装しました。 HTML5ブラウザの場合、http://example.com/search/X6a2/3のようなURLがあります。これは、履歴APIをサポートしていないブラウザでは、http://example.com/search/#X6a2/3にうまく収まります。ハッシュタグ付きのJavaScriptリダイレクト

ただし、HTML5 URLが古いブラウザで開かれた場合、ページが変更されるとすぐに新しいハッシュタグが完全なURLに追加されます。 (例えば、http://example.com/search/X6a2/3#/X6a2/4 - ugh!)

HTML5以外のブラウザが検出されるやいなや、ハッシュタグのみのバージョンにリダイレクトするためのクリーンな方法が必要です。 window.location.replace()はハッシュタグを無視しているようです。私は何をしますか?

+0

古いブラウザは、ページが見つからないため、ハッシュタグのないURLを開くことができません。 – caleb

+0

専門家ではなく、URLを変更するとmod_rewiteを使用する方がよりクリーンです。私は思っています。 –

+0

使用しようとしているコードを含めることができますか?私の(短い)テストでは 'location.replace()'にハッシュタグの問題はありません。 –

答えて

3

これは私にとってはうまくいくようです。あなたは確かにwindow.replaceが問題ですか?

var href = "http://example.com/search/X6a2/3"; 
var idx = href.indexOf('search', 0); 
var new_href = href.slice(0,idx+7) + "#" + href.slice(idx+7); 

alert(new_href); 
window.location.replace(new_href); 
+0

うん、それはうまくいくようだ。私のコードは混乱しているので、他の何かがおそらくそれを止めていたでしょう。ありがとう:) – egasimus

関連する問題