私はこの問題をどのように呼ぶべきかわかりません。この質問のタイトルは全く意味がありません。ハッシュ変更機能の例外 - ブラウザの履歴が戻っていますか?
次のケース:ユーザーが下にスクロールする1ページレイアウトです。私はセクション.layer
を持っており、ビューポート内でアドレスバーのハッシュをid
に変更する必要があります。だから.layer#one
は、アドレスバーのURLがこのwww.whatever.com/#!/one
$(window).scroll(function() {
hash = $('.layer:in-viewport').attr('id');
top.location.hash = "!/" + hash;
});
これはうまく動作し、私はそれをしたい正確に似ているように見えますビューポート内にあります。私が!/
でこの構文を使用している理由は、ブラウザがハッシュ位置に固執しようとするため、スクロール・ビヘイビアだけがバグであるという理由で、単に位置をhash
に設定するだけです。
問題は今、私はブラウザの履歴を元に戻すボタンを作れるようにしたいと思っています! これは通常
$(window).bind('hashchange', function(event) {
//query the hash in the addressbar and jump to its position on the site
});
私はこれを持っている唯一の問題はスクロールしながらハッシュが変更された場合なhashchange機能もトリガーされるということです...ので、同じようにjQueryが付属していますhashchange
機能とかなりシンプルになります。つまり、ブラウザの現在の位置に再びジャンプしたり固執したりします。どのように私はこれを解決することができる任意のアイデア?私はおそらくスクロール中にハッシュ変更を解除することができますか?しかし、これが最善の解決策ですか?
hmmこのアプローチに感謝します。しかし、私はそれを動作させるように見えることはできません。私は自分のコードをjsfiddleに投稿しましたが、デモはもちろんjsfiddleのWebサイトでは動作しません。 http://jsfiddle.net/JDpqs/ – matt
これを含めて:ビューポート? http://goo.gl/apfUa – glortho
ご参考までにpushState/onpopstateを使用することができれば、これは素晴らしいことです。 – glortho