Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.12.2010, 14:39
Аспирант
Отправить личное сообщение для Logo Посмотреть профиль Найти все сообщения от Logo
 
Регистрация: 15.03.2008
Сообщений: 91

Определить, видит ли ползователь элемент
На сайте будет несколько анимированных листалок, некоторые загружают данные ajax-ом. Т.к. лишнаяя нагрузка на процессор и трафик не нужна, а перелистывать контент когда пользователь его не видит нет смысла, хотелось бы останавливать перелистывание, когда пользователь его не видит. Т.е. нужно отловить ситуации когда: 1) блок листалки не попадает в окно. 2) вкладка браузера со страницей не активна.
Как такое реализовать?
Ответить с цитированием
  #2 (permalink)  
Старый 22.12.2010, 15:40
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

1. Сверяйте scrollTop/scrollLeft (прокрутка окна) с позицией элемента.
2. window.onblur
Ответить с цитированием
  #3 (permalink)  
Старый 22.12.2010, 17:38
Аспирант
Отправить личное сообщение для Logo Посмотреть профиль Найти все сообщения от Logo
 
Регистрация: 15.03.2008
Сообщений: 91

window.onblur не безопастно, т.к. юзер может открыть рядом окно другого приложения, или переместить фокус на адресную строку браузера, а сайт по прежднему будет видимым. Есть ли другие варианты?
Ответить с цитированием
  #4 (permalink)  
Старый 23.12.2010, 20:25
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

не в идеале можно-не совсем то. но всё же. обходной путь-разбить на блоки и положить в контейнеры. сделать обработчик онмаусовер. и создать логику(нужно будет ещё разрешение монитора) если мышь в таком то блоке то соответственно видны такие то ну и нужны еще будут данные скрола.но по моему это загрузит ком ещё больше-да и куча не нужного кода
Ответить с цитированием
  #5 (permalink)  
Старый 27.12.2010, 12:01
Аспирант
Отправить личное сообщение для Logo Посмотреть профиль Найти все сообщения от Logo
 
Регистрация: 15.03.2008
Сообщений: 91

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

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

Из обходных способов пока приходит на ум ловить мышку, клавиатуру, focus/blur, и на основании них делать вывод о неактивности пользователя после некоторого времени простоя.
Ответить с цитированием
  #6 (permalink)  
Старый 27.12.2010, 12:08
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от Logo
Юзер с оплатой по трафику, оставив вкладку сайта открытой, будет неприятно удивлен.
Можно проверять активность пользователя. Если в течении последних N минут не было ни одного действия - юзер либо ушел на другую вкладку / переключился в другую программу, либо вообще отошел.
Ответить с цитированием
  #7 (permalink)  
Старый 27.12.2010, 12:12
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

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

Последний раз редактировалось dmitriymar, 27.12.2010 в 12:14.
Ответить с цитированием
  #8 (permalink)  
Старый 27.12.2010, 12:19
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

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

Щутка)

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

Последний раз редактировалось Aetae, 27.12.2010 в 12:21.
Ответить с цитированием
  #9 (permalink)  
Старый 27.12.2010, 12:44
Аспирант
Отправить личное сообщение для Logo Посмотреть профиль Найти все сообщения от Logo
 
Регистрация: 15.03.2008
Сообщений: 91

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

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

B@rmaley.e><e, похоже это пока единственный вариант, я о нем и писал в конце сообщения.
Ответить с цитированием
  #10 (permalink)  
Старый 27.12.2010, 16:53
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

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

Последний раз редактировалось dmitriymar, 27.12.2010 в 16:58.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
определить элемент на котором щелчок warobushek Events/DOM/Window 3 13.06.2010 12:04
код между body и body ie7 не видит alexandr_poskrobka (X)HTML/CSS 2 09.03.2010 18:35
mouseout: Определить дочерние элементы Papa Общие вопросы Javascript 3 03.02.2010 20:29
Кодировка при использовании Ajax Nichloas AJAX и COMET 9 17.09.2009 16:06
Не могу определить элемент AlexMak Общие вопросы Javascript 23 21.01.2009 17:50