Определить, видит ли ползователь элемент
На сайте будет несколько анимированных листалок, некоторые загружают данные ajax-ом. Т.к. лишнаяя нагрузка на процессор и трафик не нужна, а перелистывать контент когда пользователь его не видит нет смысла, хотелось бы останавливать перелистывание, когда пользователь его не видит. Т.е. нужно отловить ситуации когда: 1) блок листалки не попадает в окно. 2) вкладка браузера со страницей не активна.
Как такое реализовать? |
1. Сверяйте scrollTop/scrollLeft (прокрутка окна) с позицией элемента.
2. window.onblur |
window.onblur не безопастно, т.к. юзер может открыть рядом окно другого приложения, или переместить фокус на адресную строку браузера, а сайт по прежднему будет видимым. Есть ли другие варианты?
|
не в идеале можно-не совсем то. но всё же. обходной путь-разбить на блоки и положить в контейнеры. сделать обработчик онмаусовер. и создать логику(нужно будет ещё разрешение монитора) если мышь в таком то блоке то соответственно видны такие то ну и нужны еще будут данные скрола.но по моему это загрузит ком ещё больше-да и куча не нужного кода
|
dmitriymar
Тоесть считать, вышел ли курсор мыши за пределы окна? Не выйдет. Пользователь может использовать какое-либо меню браузера, например добавить сайт в закладки. Жаль, что разработчики не позаботились о такой полезной опции. Юзер с оплатой по трафику, оставив вкладку сайта открытой, будет неприятно удивлен. Из обходных способов пока приходит на ум ловить мышку, клавиатуру, focus/blur, и на основании них делать вывод о неактивности пользователя после некоторого времени простоя. |
Цитата:
|
положение мыши на вкладках както отображается на координатах?-в принципе не важно отображается или нет.пусть даже будут значения нулевые у координат при этом -но если к этому добавить проверку какая страница при этом отображается(чтото по этому поводу встречал а что и где-не помню)-то всё выйдет.гдето ещё остались пользователи на маленьком трафике?
|
confirm('Если видите элемент нажмите ОК') Щутка) //FF воде как и так тормозит таймеры если вкладка не активна. |
Aetae, проверил, нет - работают. Проверял setTimeout и setInterval.
dmitriymar, разве можно как-то определить, какая страница отображается? B@rmaley.e><e, похоже это пока единственный вариант, я о нем и писал в конце сообщения. |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 03:45. |