Выследить неактивность на странице?

Discussion in 'PHP' started by Mixon, 8 Jan 2011.

  1. Mixon

    Mixon Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    394
    Likes Received:
    119
    Reputations:
    12
    Здравствуйте,дорогие античатовцы!
    Тут возник такой вопрос,каким образом средствами JS можно узнать,сейчас на данной вкладке находится пользователь или нет?
    Пример: Открыты 2 вкладки с сайтом,он открыл одну вкладку,сидит на ней - скрипты на странице работают...Он переходит на 2ю страницу (а эта скрывается),и должно в этот момент,когда он ушел со страницы - срабатывать событие...а именно - переходить в своеобразные "режим ожидания",для экономии ресурсов
    п.с. но по Возвращению на страницу - тоже событие,чтобы заново всё пошло
    таким образом хочу избежать одновременную работу скрипта в 2х или более окнах (не для защиты а для сильной экономии ресурсов компа клиента)

    Пример такого эффекта можно наблюдать в многих флеш он-лайн играх,когда ты уходишь с окна игры - тебя отсоединяет сразу...К примеру: Вормикс вконтакте http://vkontakte.ru/app1744756 ...

    Каким образом это можно реализовать,кроссбраузерно,и желательно - на JS?
     
    2 people like this.
  2. Wave

    Wave Member

    Joined:
    15 Aug 2010
    Messages:
    89
    Likes Received:
    11
    Reputations:
    0
    на делфи писал браузер... там делал такую функцию
    как сделать такое для сайта через JS не знаю
    скорее всего надо копаться в браузере... он должен это обеспечивать или давать информацию сайту
     
  3. Mixon

    Mixon Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    394
    Likes Received:
    119
    Reputations:
    12
    хм,нужен кроссбраузерный вариант,т.е. в некоторых может не быть...эт фигово(
     
  4. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Mixon как первое что приходит в голову - отслеживать onmousemove у body и запускать таймер таймаута.
     
    _________________________
    1 person likes this.
  5. Mixon

    Mixon Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    394
    Likes Received:
    119
    Reputations:
    12
    Никак не подходит...первое в голову - мне это тоже пришло...
    1) человек может что-то на странице смотреть
    2) человек может пойти в туалет (а страница должна работать,сообщения приходить)
    3) человек может видео сесть смотреть
    4) нужно с тайм-аутом в 1-3 сек уходить в ожидание...
     
  6. Wave

    Wave Member

    Joined:
    15 Aug 2010
    Messages:
    89
    Likes Received:
    11
    Reputations:
    0

    Можно просматривать действия на твоей странице....
     
  7. Mixon

    Mixon Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    394
    Likes Received:
    119
    Reputations:
    12
    Ты вобще читал,выше ответ?
    пошел человек в туалет,что он в это время делать на Странице будет? ничего...а всё станет,чего быть НЕ должно...
     
  8. dirtybiz

    dirtybiz New Member

    Joined:
    28 Oct 2010
    Messages:
    28
    Likes Received:
    3
    Reputations:
    0
    Gifts же написал, создать таймер таймаута, пока человек ржет/срет/жрёт у него на таймере накапает число X, по которому ты сможешь отрубить его.
     
  9. Mixon

    Mixon Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    394
    Likes Received:
    119
    Reputations:
    12
    Ты вобще мой комментарий на ответ Gifts`а читал?))))
    тот таймер НЕ должен привышать 5 сек...думаешь он пожрать и посрать за 5 сек успеет ёпыть?!
    dirtybiz,ВЫ ВОБЩЕ ЧИТАЕТЕ ОТВЕТЫ???
    человека НЕЛЬЗЯ отключать если он находится НА СТРАНИЦЕ,ХОТЬ ЕГО И НЕТ ЗА КОМПОМ,А ОТКЛЮЧАТЬ - ПО ТАЙМЕРУ 1-5 СЕКУНД! НЕ ЧАСОВ!!!
    Алёёёёёёё,проснись,дядя!!!!!


    p.s. а главное ты уже Второй такой...
     
    #9 Mixon, 8 Jan 2011
    Last edited: 8 Jan 2011
  10. Wave

    Wave Member

    Joined:
    15 Aug 2010
    Messages:
    89
    Likes Received:
    11
    Reputations:
    0
    та забей на это и выводи сообщение чтобы продолжить сеанс необходимо перезагрузить страницу и не мучайся!
     
  11. dirtybiz

    dirtybiz New Member

    Joined:
    28 Oct 2010
    Messages:
    28
    Likes Received:
    3
    Reputations:
    0
    Сорри, я просто не совсем понимаю. Но как понял из этого:



    думаю решить можно так:
    на каждой из страниц код 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 {
    //продолжаем работу кода
    }


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


    Ещё раз прошу прощения за невнимательность
     
    #11 dirtybiz, 8 Jan 2011
    Last edited: 8 Jan 2011
  12. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    dirtybiz слишком сложно. Можно просто записывать в кукисы значение последней страницы.

    Mixon не кричите. Как написано выше - блокировать можно все окна, кроме последнего активного. А урл последней страницы (а лучше внутренний ID ее, например, генерящийся рандомно) - записывать в кукисы
     
    _________________________
  13. dirtybiz

    dirtybiz New Member

    Joined:
    28 Oct 2010
    Messages:
    28
    Likes Received:
    3
    Reputations:
    0
    да.. как же я сам не догадался... :(
     
    1 person likes this.
  14. Mixon

    Mixon Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    394
    Likes Received:
    119
    Reputations:
    12
    Всем биг спс,вариант не плохой,но всё-же...
    я лично даже часто открываю 2 страницы сразу,т.е. 2 окна браузера,в одном общаюсь а во втором - играю...и должно быть активно в обоих...ведь пока 1 окно открыл играть - во втором сообщения перестанут приходить,хотя я их и жду...

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