Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Определить, видит ли ползователь элемент (https://javascript.ru/forum/misc/13970-opredelit-vidit-li-polzovatel-ehlement.html)

Logo 22.12.2010 14:39

Определить, видит ли ползователь элемент
 
На сайте будет несколько анимированных листалок, некоторые загружают данные ajax-ом. Т.к. лишнаяя нагрузка на процессор и трафик не нужна, а перелистывать контент когда пользователь его не видит нет смысла, хотелось бы останавливать перелистывание, когда пользователь его не видит. Т.е. нужно отловить ситуации когда: 1) блок листалки не попадает в окно. 2) вкладка браузера со страницей не активна.
Как такое реализовать?

exec 22.12.2010 15:40

1. Сверяйте scrollTop/scrollLeft (прокрутка окна) с позицией элемента.
2. window.onblur

Logo 22.12.2010 17:38

window.onblur не безопастно, т.к. юзер может открыть рядом окно другого приложения, или переместить фокус на адресную строку браузера, а сайт по прежднему будет видимым. Есть ли другие варианты?

dmitriymar 23.12.2010 20:25

не в идеале можно-не совсем то. но всё же. обходной путь-разбить на блоки и положить в контейнеры. сделать обработчик онмаусовер. и создать логику(нужно будет ещё разрешение монитора) если мышь в таком то блоке то соответственно видны такие то ну и нужны еще будут данные скрола.но по моему это загрузит ком ещё больше-да и куча не нужного кода

Logo 27.12.2010 12:01

dmitriymar
Тоесть считать, вышел ли курсор мыши за пределы окна? Не выйдет. Пользователь может использовать какое-либо меню браузера, например добавить сайт в закладки.

Жаль, что разработчики не позаботились о такой полезной опции. Юзер с оплатой по трафику, оставив вкладку сайта открытой, будет неприятно удивлен.

Из обходных способов пока приходит на ум ловить мышку, клавиатуру, focus/blur, и на основании них делать вывод о неактивности пользователя после некоторого времени простоя.

B@rmaley.e><e 27.12.2010 12:08

Цитата:

Сообщение от Logo
Юзер с оплатой по трафику, оставив вкладку сайта открытой, будет неприятно удивлен.

Можно проверять активность пользователя. Если в течении последних N минут не было ни одного действия - юзер либо ушел на другую вкладку / переключился в другую программу, либо вообще отошел.

dmitriymar 27.12.2010 12:12

положение мыши на вкладках както отображается на координатах?-в принципе не важно отображается или нет.пусть даже будут значения нулевые у координат при этом -но если к этому добавить проверку какая страница при этом отображается(чтото по этому поводу встречал а что и где-не помню)-то всё выйдет.гдето ещё остались пользователи на маленьком трафике?

Aetae 27.12.2010 12:19

confirm('Если видите элемент нажмите ОК')

Щутка)

//FF воде как и так тормозит таймеры если вкладка не активна.

Logo 27.12.2010 12:44

Aetae, проверил, нет - работают. Проверял setTimeout и setInterval.

dmitriymar, разве можно как-то определить, какая страница отображается?

B@rmaley.e><e, похоже это пока единственный вариант, я о нем и писал в конце сообщения.

dmitriymar 27.12.2010 16:53

Цитата:

Сообщение от Logo
разве можно как-то определить, какая страница отображается?

Цитата:

Сообщение от B@rmaley.e><e
Можно проверять активность пользователя. Если в течении последних N минут не было ни одного действия - юзер либо ушел на другую вкладку / переключился в другую программу, либо вообще отошел.

добавь к тому что я писал по поводу онмаусовер(по поводу того что если мышь над элементом то он отображается и часть окружающих-в зависимости от разрешения экрана)-активность пользователя и получиш искомое-вопрос стоят ли все эти мучения единичных случаев маленького трафика у клиента?


Часовой пояс GMT +3, время: 03:45.