ユーザーが戻るボタンを押すと、onhashchangeイベントを使用してFAQページのアンカーリンクに自動的にスクロールしました。
スクロールが機能しない場合に進むボタンが押されている場合を除いて、正常に機能します。
なぜこれが起こるのか理解できませんでした。なぜこれが起こるのか誰かが知っていますか?
デモページ:http ://static.nemesisdesign.net/hashchange-issue/index.html (問題を再現するには、左側の列のリンクをクリックしてから、戻るボタンを数回押してから、進むボタンを押してください)
これは、スクロールを行うコードの一部です。
// if browser supports onhashchange event
if ("onhashchange" in window){
$(window).bind('hashchange', function(e){
e.preventDefault();
var href = (location.hash != '') ? location.hash : '#container'
scrollToFaq(href);
return false;
});
}
scrollToFaq = function(href){
// scroll
$('html, body').animate(
// scroll to clicked item
{scrollTop: $(href).offset().top},
400, // duration in ms
function(){
if(href != '#container'){
location.hash = href.replace('#',''); // update hash
}
// show back button if necessary
if($(window).scrollTop() > 60){
// onclick back to top button
$('#back-top').fadeIn();
}
}
);
}
// when clicking on a faq menu item
$('#faqmenu a').click(function(e){
// prevent default behaviour
e.preventDefault();
// cache href attribute
scrollToFaq($(this).attr('href'));
});