Как найти (в javascript) текущее смещение «прокрутки» в мобильном сафари / iphone - PullRequest
14 голосов
/ 24 марта 2010

Хотелось бы узнать смещение по x / y того, как далеко пользователь «прокрутил» в окне просмотра в мобильном сафари на iphone.

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

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

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

У

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

Есть указатели?

Ответы [ 7 ]

6 голосов
/ 04 мая 2010

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

3 голосов
/ 22 февраля 2013

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

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);
2 голосов
/ 10 декабря 2010

У меня была такая же проблема ... это помогло:

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

Получено из этого вопроса: Получить текущую позицию окна просмотра в мобильном (iPhone) Safari

1 голос
/ 08 февраля 2018

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

if((navigator.userAgent.match(/iPhone|iPad|iPod/i))){
    ('#tutorial-landlord').click(function(){
        window.scroll(100, 1500); // x, y (horizontal, vertical position) 
    });
}

Чтобы найти положение прокрутки. Просто зайдите в консоль в Chrome и напишите window.scrollY для вертикали и посмотрите, как меняется положение, поэтому запишите это число и укажите его вместо x и y

0 голосов
/ 28 января 2013

У меня была такая же проблема на iPad. Просто отключите консоль. Высота окна просмотра изменяется при открытии консоли в Safari.

0 голосов
/ 21 июня 2010

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

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

[myWebView stringByEvaluatingJavaScriptFromString: @"scrollY"];

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

0 голосов
/ 24 марта 2010

Вы пробовали чистый способ JS?

document.body.scrollTop
...