3

jQuery の読み込み直後にブラウザ ウィンドウをスクロールしようとすると問題が発生します。コンテンツは正常にロードされ、ロードが完了すると呼び出される関数が呼び出されています。ただし、次のようにタイムアウトを 300 ミリ秒に設定した場合にのみ、ページを実際にスクロールできます。

frame.html("#box").load("loadedfile.php", function(){
   setTimeout(function() {
       $('html,body').animate({
          scrollTop: $("#framed").offset().top
          }, 750);
       },300);
    });

コンテンツがロードされた後、ブラウザーがスクロールできるようになる前に、ロード完了機能が実行されているようです (スクリプトをホストするページは、最初はスクロールバーをアクティブにするのに十分な長さではないため)。

私の回避策はずさんな感じで、おそらくそうです。これを処理するより良い方法はありますか?タイムアウトは、これを処理するための信頼できる方法とは思えません。

.animate に加えて、window.scrollTo と jQuery scrollTo プラグインを試しました。

4

2 に答える 2

2

You can use ajax call to laod an external page and on success of that you can all the scroll animation.

$.ajax({
        url: 'loadedfile.php',
        dataType: "html",                 // <-- set dataType to "html"
        success: function(response) {
            $("#box").html(response).fadeIn(1000); // <-- added fadeIn()
        $('html,body').animate({
            scrollTop: $("#framed").offset().top
          }, 750);
        }
    })

Hope it does work for you. If not please do provide the link to view your problem practically, so that it can be sorted out.

于 2012-08-24T10:06:46.147 に答える