だから、私はかなりユニークな問題を抱えています(アーキテクチャに多少基づいています)。
このホームページはスクロールがスムーズです。それは正常に動作します。トップバーの「登録」をクリックすると、フォーム (部分ビュー) が正常に表示されます。「About」または「Demo」のいずれかをクリックすると、クレイジーなダブルスクロールが発生します。
また、「About」をクリックすると (登録をクリックした後)、二重スクロールが発生するとします。上にスクロールしてもう一度クリックすると正常に動作しますが、上にスクロールして「Demo」をクリックすると再び発生します。これは、クリックを交互に行うと非常に楽しくなります (笑) 残念ながら、それはポイントではありません。
私はjavascriptに関してはまったくの初心者で、これを数日間試しましたが、何もしませんでした。
これは、「About」および「Demo」ボタンに使用されているコードです。
//Smooth scroll - excludes register
$('a[href*=#], a[href*="/#"]').click(function () {
var hash = $(this).attr('href');
hash = hash.slice(hash.indexOf('#') + 1);
if ( hash ) { $.scrollTo(hash == 'top' ? 0 : 'a[name='+hash+']', 500); window.location.hash = '#' + hash; return false; }
});
これはregフォーム用です:
if (typeof window.history.pushState == "function") {
function showRegister() {
if ( window.location.pathname == '/home/register' ) {
var form = $('#pg-signup-register');
$('#landing-register-clip').css({ 'max-height': window.innerHeight + 'px' });
form.css({
'margin-top': ((window.innerHeight - form.outerHeight()) / 2) + 'px'
});
$('#landing-register').animate({
height: window.innerHeight + 'px'
}, 1000);
$.scrollTo(0, 500);
} else {
$('#landing-register').animate({
height: 0
}, 1000);
}
}
window.addEventListener('popstate', showRegister);
// Smooth scrolling - register form
$('a[href^="/home/register"], a[href="/"]').click(function () {
if ( window.location.pathname != $(this).attr('href') )
window.history.pushState(null, null, $(this).attr('href'));
showRegister();
return false;
});
}