После борьбы с этим я, кажется, нашел причину, а также обходной путь. Похоже, что анимация, используемая в changePage , имеет преимущество перед бесшумной прокруткой. Вы можете прочитать больше об этом здесь . На той же странице комментарии также начинают обсуждать различные события, такие как pagebeforeshow или pageaftershow - к сожалению, эти результаты не дали мне результатов.
Обходной путь, который я нашел, заключался в том, чтобы обернуть .silentScroll за полсекунды. Это выглядит немного изменчиво, но, кажется, работает на меня. Надеюсь, это поможет.
Попробуйте:
function changeViewport(){
var errorMsg = $('.dataerror').first();
if(errorMsg != null) {
var newPosition = errorMsg.offset();
setTimeout(function(){$.mobile.silentScroll(newPosition.top)}, 500);
}
}