Мобильное сафари: window.pageYOffset / scrollY, по-видимому, игнорирует высоту панели навигации, даже если она прокручивается - PullRequest
3 голосов
/ 12 января 2011

Итак, я настроил слушателя прокрутки:

window.onscroll = function (){
    alert(window.pageYOffset);  // have also tested with window.scrollY
}

И, как и ожидалось, я получаю оповещения после завершения прокрутки. У меня есть консоль отладки, также отключенная для этого, чтобы не добавлять дополнительное пространство в мобильный браузер, поэтому я выполняю alert (), а не console.log ().

Теперь я также делаю эту загрузку:

setTimeout(function()
{
    window.scrollTo(0, 0);
}, 33);

И, как и ожидалось, панель навигации скрывается под нагрузкой. Я попытался сделать window.scrollTo () без тайм-аута, и он не работал, пока я не добавил тайм-аут. Во всяком случае, это не проблема. Моя панель навигации скрывается, чего я и хотел.

Итак, теперь, когда мой видовой экран перемещен в 0,0 и предупреждает о срабатывании прокрутки, я ожидаю, что действие перетаскивания моего пальца вниз (прокрутки вверх), чтобы открыть панель навигации, скажет мне, что window.pageOffsetY < 0 или window.scrollY

Мой вопрос: Есть ли способ узнать, прокручиваете ли вы в пространство панели навигации?

Конечная цель этого - всегда располагать что-то внизу. У меня есть элемент, который делает это при прокрутке правильно, кроме случаев, когда я начинаю входить в область прокрутки панели навигации, когда мобильное сафари сообщает scrollY / pageYOffset как 0, даже если происходит еще какое-то действие прокрутки.

1 Ответ

1 голос
/ 13 января 2011

А, на iOS вы можете посмотреть:

window.innerHeight  

Если вы прокручиваете с видимой панелью навигации, то innerHeight будет меньше 416. min innerHeight должен быть 416-60. иначе 356, который даст вам знать, что на панели навигации имеется полная информация.

...