Здравствуйте,дорогие античатовцы! Тут возник такой вопрос,каким образом средствами JS можно узнать,сейчас на данной вкладке находится пользователь или нет? Пример: Открыты 2 вкладки с сайтом,он открыл одну вкладку,сидит на ней - скрипты на странице работают...Он переходит на 2ю страницу (а эта скрывается),и должно в этот момент,когда он ушел со страницы - срабатывать событие...а именно - переходить в своеобразные "режим ожидания",для экономии ресурсов п.с. но по Возвращению на страницу - тоже событие,чтобы заново всё пошло таким образом хочу избежать одновременную работу скрипта в 2х или более окнах (не для защиты а для сильной экономии ресурсов компа клиента) Пример такого эффекта можно наблюдать в многих флеш он-лайн играх,когда ты уходишь с окна игры - тебя отсоединяет сразу...К примеру: Вормикс вконтакте http://vkontakte.ru/app1744756 ... Каким образом это можно реализовать,кроссбраузерно,и желательно - на JS?
на делфи писал браузер... там делал такую функцию как сделать такое для сайта через JS не знаю скорее всего надо копаться в браузере... он должен это обеспечивать или давать информацию сайту
Никак не подходит...первое в голову - мне это тоже пришло... 1) человек может что-то на странице смотреть 2) человек может пойти в туалет (а страница должна работать,сообщения приходить) 3) человек может видео сесть смотреть 4) нужно с тайм-аутом в 1-3 сек уходить в ожидание...
Ты вобще читал,выше ответ? пошел человек в туалет,что он в это время делать на Странице будет? ничего...а всё станет,чего быть НЕ должно...
Gifts же написал, создать таймер таймаута, пока человек ржет/срет/жрёт у него на таймере накапает число X, по которому ты сможешь отрубить его.
Ты вобще мой комментарий на ответ Gifts`а читал?)))) тот таймер НЕ должен привышать 5 сек...думаешь он пожрать и посрать за 5 сек успеет ёпыть?! dirtybiz,ВЫ ВОБЩЕ ЧИТАЕТЕ ОТВЕТЫ???человека НЕЛЬЗЯ отключать если он находится НА СТРАНИЦЕ,ХОТЬ ЕГО И НЕТ ЗА КОМПОМ,А ОТКЛЮЧАТЬ - ПО ТАЙМЕРУ 1-5 СЕКУНД! НЕ ЧАСОВ!!! Алёёёёёёё,проснись,дядя!!!!! p.s. а главное ты уже Второй такой...
та забей на это и выводи сообщение чтобы продолжить сеанс необходимо перезагрузить страницу и не мучайся!
Сорри, я просто не совсем понимаю. Но как понял из этого: думаю решить можно так: на каждой из страниц код js, шлёт запрос на сервер с указанем своего собственного location.href, только по событию onmouseover к элементу body.(а можно и просто по таймеру) сервер сохраняет ПОСЛЕДНИЙ url, который ему пришел. вышеупомянутый код js так-же проверяет какой последний URL был сохранен на сервер. взависимости от этого решает что ему делать: если результат, который ему пришел от сервера равен собственному location.href, то продолжается работа более сложного скрипта(твоей игры, чата и тд). если не равен, то работа скрипта блокируется. т.е. имеем например скрипт al_page.php из каждой страницы высылаем по интервалу на него запрос: var url = 'http://site.com/al_page.php?act=push&page=' + location.href; ну и http://site.com/al_page.php?act=getlast для проверки и проверяем if(result != location.href) { //блокируем более сложный код } else { //продолжаем работу кода } я понимаю что ты хотел решить траблу совсем без запросов к серваку, ибо каждый запрос с каждой вкладки так же грузит клиент, но такого решения я придумать не смог Ещё раз прошу прощения за невнимательность
dirtybiz слишком сложно. Можно просто записывать в кукисы значение последней страницы. Mixon не кричите. Как написано выше - блокировать можно все окна, кроме последнего активного. А урл последней страницы (а лучше внутренний ID ее, например, генерящийся рандомно) - записывать в кукисы
Всем биг спс,вариант не плохой,но всё-же... я лично даже часто открываю 2 страницы сразу,т.е. 2 окна браузера,в одном общаюсь а во втором - играю...и должно быть активно в обоих...ведь пока 1 окно открыл играть - во втором сообщения перестанут приходить,хотя я их и жду... походу,когда полностью уходит флеш с поля обзора страницы (она сворачивается) - то от своеобразно отключается,и это можно проследить...ну с флешем я не работал то ничего в данной теме мутить и не смогу...(