Как найти (в javascript) текущее смещение "прокрутки" в мобильном сафари/iphone

Я хотел бы знать смещение x/y того, насколько пользователь "прокручивается" в окне просмотра в мобильном сафари на iphone.

Другими словами, если я (через javascript) перезагрузил текущую страницу, я бы хотел найти значения, которые мне нужно будет передать в window.scrollTo(...), чтобы переместить документ/область просмотра как это в настоящее время.

window.pageXOffset всегда сообщает 0

jquery $('body'). scrollTop() всегда сообщает 0

события имеют pageX, но это не учитывает прокрутку страницы, которая происходит после того, как вы отпустите свой палец, если ваш жест должен "щелкнуть" страницу вверх/вниз. А именно, это даст мне точку, когда палец покидает экран, но это не всегда соответствует тому, где страница будет после завершения прокрутки.

Любые указатели?

Ответы

Ответ 1

window.pageYOffset должен дать вам текущее смещение прокрутки. Там window.pageXOffset, если вам это нужно.

Ответ 2

Это действительно сработает:

var scrollX = window.pageXOffset; 
var scrollY = window.pageYOffset;

Если вы просматриваете контент в iFrame (что обычно используется в WebViews), вам нужно будет добавить родителя:

var scrollX = parent.window.pageXOffset;

Также обратите внимание, что эти значения не могут быть записаны. Чтобы изменить положение прокрутки, вам нужно будет использовать метод window.scrollTo:

var scrollX = window.pageXOffset; 
var scrollY = window.pageYOffset;
window.scrollTo(scrollX -100, scrollY -100);

Ответ 4

Вы пробовали использовать чистый js?

document.body.scrollTop

Ответ 6

У меня была такая же проблема на iPad. Просто деактивируйте консоль. Высота окна просмотра изменяется, когда консоль открыта в Safari.

Ответ 7

Эй! Попытайтесь пройти эту ссылку.

или попробуйте выполнить следующий код.

[myWebView stringByEvaluatingJavaScriptFromString: @"scrollY"];

на самом деле - я получил ответ от этого question.