22.12.2010, 14:39
|
Аспирант
|
|
Регистрация: 15.03.2008
Сообщений: 91
|
|
Определить, видит ли ползователь элемент
На сайте будет несколько анимированных листалок, некоторые загружают данные ajax-ом. Т.к. лишнаяя нагрузка на процессор и трафик не нужна, а перелистывать контент когда пользователь его не видит нет смысла, хотелось бы останавливать перелистывание, когда пользователь его не видит. Т.е. нужно отловить ситуации когда: 1) блок листалки не попадает в окно. 2) вкладка браузера со страницей не активна.
Как такое реализовать?
|
|
22.12.2010, 15:40
|
Профессор
|
|
Регистрация: 21.01.2010
Сообщений: 1,022
|
|
1. Сверяйте scrollTop/scrollLeft (прокрутка окна) с позицией элемента.
2. window.onblur
|
|
22.12.2010, 17:38
|
Аспирант
|
|
Регистрация: 15.03.2008
Сообщений: 91
|
|
window.onblur не безопастно, т.к. юзер может открыть рядом окно другого приложения, или переместить фокус на адресную строку браузера, а сайт по прежднему будет видимым. Есть ли другие варианты?
|
|
23.12.2010, 20:25
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
не в идеале можно-не совсем то. но всё же. обходной путь-разбить на блоки и положить в контейнеры. сделать обработчик онмаусовер. и создать логику(нужно будет ещё разрешение монитора) если мышь в таком то блоке то соответственно видны такие то ну и нужны еще будут данные скрола.но по моему это загрузит ком ещё больше-да и куча не нужного кода
|
|
27.12.2010, 12:01
|
Аспирант
|
|
Регистрация: 15.03.2008
Сообщений: 91
|
|
dmitriymar
Тоесть считать, вышел ли курсор мыши за пределы окна? Не выйдет. Пользователь может использовать какое-либо меню браузера, например добавить сайт в закладки.
Жаль, что разработчики не позаботились о такой полезной опции. Юзер с оплатой по трафику, оставив вкладку сайта открытой, будет неприятно удивлен.
Из обходных способов пока приходит на ум ловить мышку, клавиатуру, focus/blur, и на основании них делать вывод о неактивности пользователя после некоторого времени простоя.
|
|
27.12.2010, 12:08
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
Сообщение от Logo
|
Юзер с оплатой по трафику, оставив вкладку сайта открытой, будет неприятно удивлен.
|
Можно проверять активность пользователя. Если в течении последних N минут не было ни одного действия - юзер либо ушел на другую вкладку / переключился в другую программу, либо вообще отошел.
|
|
27.12.2010, 12:12
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
положение мыши на вкладках както отображается на координатах?-в принципе не важно отображается или нет.пусть даже будут значения нулевые у координат при этом -но если к этому добавить проверку какая страница при этом отображается(чтото по этому поводу встречал а что и где-не помню)-то всё выйдет.гдето ещё остались пользователи на маленьком трафике?
Последний раз редактировалось dmitriymar, 27.12.2010 в 12:14.
|
|
27.12.2010, 12:19
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,577
|
|
confirm('Если видите элемент нажмите ОК')
Щутка)
//FF воде как и так тормозит таймеры если вкладка не активна.
Последний раз редактировалось Aetae, 27.12.2010 в 12:21.
|
|
27.12.2010, 12:44
|
Аспирант
|
|
Регистрация: 15.03.2008
Сообщений: 91
|
|
Aetae, проверил, нет - работают. Проверял setTimeout и setInterval.
dmitriymar, разве можно как-то определить, какая страница отображается?
B@rmaley.e><e, похоже это пока единственный вариант, я о нем и писал в конце сообщения.
|
|
27.12.2010, 16:53
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
Сообщение от Logo
|
разве можно как-то определить, какая страница отображается?
|
Сообщение от B@rmaley.e><e
|
Можно проверять активность пользователя. Если в течении последних N минут не было ни одного действия - юзер либо ушел на другую вкладку / переключился в другую программу, либо вообще отошел.
|
добавь к тому что я писал по поводу онмаусовер(по поводу того что если мышь над элементом то он отображается и часть окружающих-в зависимости от разрешения экрана)-активность пользователя и получиш искомое-вопрос стоят ли все эти мучения единичных случаев маленького трафика у клиента?
Последний раз редактировалось dmitriymar, 27.12.2010 в 16:58.
|
|
|
|