2012-03-09 38 views
3

私は1ページを作成し、アドレスを変更するためにpushStateを使用しています。今、私が後退すると、ポップステートが発射され、現在の位置から最後の位置にスクロールしてページをアニメートしたいと思います。それはもちろん動作しますが、ページは先頭にジャンプします。popstate - 実際に戻るには、戻るボタンを2回クリックする必要があります

どのようにその動作を防止する方法を知っていますか?私はスクロールをアニメーション化して、URLを変更した場合、それはないだろう、判明OK:私は....スクロールをアニメーション化する

感謝:)

//編集をjQueryのを使用しています周りのジャンプ - ので、私はそれを少し説明し、コードが少し厄介です...
http://www.testwebseiten.at/user/falk/stein-jagersbacher.at

を今私はダブルプレス取り戻すためのバックボタンにあります。

var scrollCurrentSection = function(event) { 
     if (typeof event.preventDefault != 'undefined') 
      event.preventDefault(); 

     var page = ""; 
     if (window.location.href.substr(-1) == '/') 
      page = sjag.index; 
     else 
      page = window.location.href.match(/([^\/]+)$/)[1]; 

     $this  = $('a[href$="'+page+'"]'); 
     if ($this.length) { 
      sjag.scrollToSection($this); 
     } 
    } 
    window.onpopstate = scrollCurrentSection; 

sjagにはいくつかのオプションとメソッドが含まれています... sjag.indexには 'index.php'だけが含まれ、sjag.scrollToSectionにはアニメーションが含まれています。ナビゲーションのリンクをクリックすると

は、以下の関数が呼び出されます:

// set navi 
    $("#navi a, #navi-add a").click(function(event) { 
     var data = $(this).data('sjagpage'); 
     if (typeof data == 'undefined') 
      return; 

     event.preventDefault(); 
     // animate scrolling 
     $this = $(this); 
     sjag.scrollToSection($(this), function() { 
      history.pushState("", "", $this.attr('href')); 
     }); 
    }); 

$(this).data('sjagpage')はjQueryの要素が含まれています。

スクロールをアニメートしないと、戻ってくるのに1回クリックするだけですが、アニメーションを作成すると2つ必要です...なぜですか?

+0

window.onpopstate = scrollCurrentSection; 

あなたはそれをのようなものを結合する必要があります。あなたはポストしてもらえますか? –

+0

@Deepak:私はしました - 私はあなたがもう少し理解してくれることを願っています:) – lumio

答えて

0

event.preventDefaultは、eventオブジェクトにjQueryによって追加された関数ですが、jQueryを使用してイベントハンドラをバインドしていないという問題があると思います。したがって、デフォルトのナビゲーションは防止されていないため、2つの履歴項目が表示されます。

の代わりに:私たちは、コードが必要

$(window).bind("popstate", scrollCurrentSection); 
+0

私は見る...アニメーションまたは仕上げ機能が2回呼び出されています...私はそのエラーを切り離そうとしています:)ありがとうございました – lumio

+0

私はhtmlとbodyをアニメーション化したので、コールバック関数は2回実行されました。 – lumio

関連する問題