非常に賢い人たち!
私はこれに悩まされて1週間試しましたが、論理的な解決策を見つけることができません。
基本的に、ユーザーが2つの異なるリンクのセットをクリックするたびに、準備されたURLを追加する必要があります。
これまでのところ、私のコードではこれが発生します
$(selecter a.1).live('click', function(){
window.location.hash = '!/' + usr + '/' + $(this).attr('href').replace('.php', '/');
}
これにより、URLは次のようになります。http ://www.site.com/!#/ username / page1
次に、関数を呼び出してURLのハッシュ変更を検出し、URLを元の状態に戻します。
$(window).bind('hashchange', function(){
hash = window.location.hash;
//if( hash.indexOf( "/files/" ) == 6 )
//newHash = window.location.hash.substring(3).replace(usr + '/files', '').replace('/', '.php');
//else
newHash = window.location.hash.substring(3).replace(usr + '/', '').replace('/', '.php');
//newHash = window.location.hash.replace(dump, origHash, 'g');
console.log(newHash);
if (newHash) {
$wrap.find("#main-content").fadeOut(200, function() {
$wrap.load(newHash + " #main-content", function() {
$content.fadeIn(function() {
$wrap.animate({
height: baseHeight + $content.height() + "px"
}, 500);
});
});
});
}
});
問題はありません。問題は、ユーザーがURLに少し異なる方法で追加したいリンクの2番目のセットをクリックしたときです。
$(selecter a.2).live('click', function(){
window.location.hash = '!/' + usr + '/' + $(this).attr('href').replace('.php', '/');
}
次のようになります:http ://www.site.com/!#/ username / files / sub-page /
リンクのhrefは次のようになりますhref="files / sub-page.php"
私が抱えている問題は、ウィンドウをハッシュチェンジにバインドすると、最初のリンクセットにのみ適用できる元の「状態」にURLを戻そうとすることです。
元のhref値をwindow.location.hashに置き換えるだけでなく、それをうまく実現したのはなぜかという考えがありました...ユーザーがページをリロードした場合はどうなりますか?まあまあ!元のハッシュは失われます!また、URLはハッシュ変更の検出に依存しているため、適切なphpページをロードできます。
さて、次に、URLの最後の単語を除くすべてをなんとかして切り取り、replace('/'、'.php')を実行して拡張子を追加できると思いました...
さて、それに関する他の問題は、URLでfiles/ディレクトリにあるfiles/sub-page.phpを指していることです。
私はもともとすべてを1つのディレクトリに持っていて、手動でfiles /をURLに追加したかったのですが、同じロジックで問題が発生していたので、それらをfiles /というフォルダに移動して、jsをだまして残す方法を考えました。そこにあるそのディレクトリパス...
わかりました、それは私の話です...
助けてもらえますか?