silentScroll будет отменен после загрузки страницы - PullRequest
1 голос
/ 22 февраля 2012

После того, как мой мобильный сайт jQuery загружен, я хочу прокрутить до позиции div.Работает с использованием этого кода

function changeViewport(){
          var errorMsg = $('.dataerror').first();
          if(errorMsg != null) {
              var newPosition = errorMsg.offset();
              $.mobile.silentScroll(newPosition.top);
          }
    }

Я вызываю функцию на $(document).ready, но после вызова функции и silentScroll в положение кажется, что рамки автоматически прокручиваются обратно к началу страницы ... Кто-нибудь знает, какпредотвратить такое поведение?(Я также пробовал события pageinit, pageshow ...) Нужно ли перезаписывать функцию или вызывать другое событие?Любая помощь или предложение приветствуются:)

ура.

1 Ответ

0 голосов
/ 14 ноября 2012

После борьбы с этим я, кажется, нашел причину, а также обходной путь. Похоже, что анимация, используемая в changePage , имеет преимущество перед бесшумной прокруткой. Вы можете прочитать больше об этом здесь . На той же странице комментарии также начинают обсуждать различные события, такие как pagebeforeshow или pageaftershow - к сожалению, эти результаты не дали мне результатов.

Обходной путь, который я нашел, заключался в том, чтобы обернуть .silentScroll за полсекунды. Это выглядит немного изменчиво, но, кажется, работает на меня. Надеюсь, это поможет.

Попробуйте:

function changeViewport(){
      var errorMsg = $('.dataerror').first();
      if(errorMsg != null) {
          var newPosition = errorMsg.offset();
          setTimeout(function(){$.mobile.silentScroll(newPosition.top)}, 500);
      }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...