加载页面后,silentScroll将被撤消

时间:2012-02-22 09:10:41

标签: javascript jquery jquery-mobile

加载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 :(得分:0)

在与自己斗争之后,我似乎找到了原因以及解决方法。看来 changePage 中使用的动画正在考虑静音滚动。您可以阅读有关此here的更多信息。在同一页面上,评论也开始讨论不同的事件,例如 pagebeforeshow pageaftershow - 遗憾的是,这些事件对我没有任何影响。

我发现的解决方法是将 .silentScroll 包装在半秒的超时时间内。它看起来有点不稳定,但它似乎对我有用。希望这会有所帮助。

试试这个:

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