Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak sprawdzić czy okno jest aktywne ?
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
wizard144
Witam!

Czy ma może ktoś z was pomysł na sprawdzenie czy okno jest aktywne tzn, czy user przebywa w oknie, czy może okno działa "w tle" ?
thek
O tak... I co jeszcze? Jeśli jest w tle, to ma na upartego ponad wszystkie aplikacje/okna się ustawiać lub chować tak, by nie było go nigdy widać? biggrin.gif Jasssssssne winksmiley.jpg Czy wiesz, że w ten sposób próbujesz wpływać na wyświetlenie aplikacji na poziomie systemu operacyjnego lub przejmowanie kontroli nad przeglądarką (jeśli to tylko browsera i jego okien/kart tyczyłoby)? Weź trochę rozróżniaj zakres możliwości określonych technologii.
kamil4u
Oczywiście, że się da, ale nie w 100%. Możesz zastosować zdarzenie onblur na window
Kod
<html>
<head>

<title>onblur test</title>

<script type="text/javascript">

window.onblur = function(){ alert("Wracaj do mnie - nie ma wychodzenia :)"); };
</script>
</head>

<body>
:)
</body>
</html>
wizard144
Heh, raczej mi chodziło o coś takiego że hmmm. Robię (tak o sobie ) chat dla siebie i kumpli bo pracujemy nad pewnym projektem w php. Dosyc duzym.

No i tam laduje tresc na intervale za pomoca ajaxa. Elegancko.

Potem sprawdza z aktualna trescia i jesli sie rozni to wtedy wyskakuje alert (nadeszla nowa wiadomosc) biggrin.gif taki bajer.

No tylko ze skoro ktos JEST w oknie to mu nie potrzebny ten alert - chyba oczy ma to widzi :]

Chcialbym po prostu zeby to sie wyswietlalo tylko w momencie gdy przegladarka dziala sobie w tle lub jak jest zminimalizowana smile.gif


Tyle smile.gif
erix
Cytat
Czy wiesz, że w ten sposób próbujesz wpływać na wyświetlenie aplikacji na poziomie systemu operacyjnego lub przejmowanie kontroli nad przeglądarką (jeśli to tylko browsera i jego okien/kart tyczyłoby)?

Nie przesadzaj. winksmiley.jpg Sprawdzanie aktywności jest przydatne, chociażby do informowania o nowych wiadomościach. Twarzksiążka coś takiego robi i nikt się z tego powodu nie wkurza. tongue.gif

Samego okna, oczywiście, nie da się sprawdzić, ale nieaktywność na naszej stronie - owszem. Wystarczy sprawdzać, czy przez określony kawałek czasu nie naciśnięto żadnego klawisza, czy nie ruszono szczurem. winksmiley.jpg
thek
Widzisz... i tutaj dochodzimy do braku precyzji słowa "okno aktywne" Okno aktywne to takie, na którym jest ustawiony focus, jest ono ponad innymi, ale nie było mowy o tym, że użytkownik jakąś interakcję przejawia. Może przecież być sytuacja, że user ma okno jako wyświetlane, ale kompletnie nic nie robi. Dodatkowo fraza "okno działa w tle" sugeruje, że chodzi o sprawdzanie na poziomie systemu operacyjnego (okno w tle innych aplikacji lub zminimalizowane). Zresztą sam zobacz sens ostatniego posta autora topica -> "tylko w momencie gdy przegladarka dziala sobie w tle lub jak jest zminimalizowana" i to po prostu samo się narzuca winksmiley.jpg
wizard144
Ludzie haha.gif

Najlepiej by było gdyby to robiło tak:


Jak user ma zminimalizowane, albo gdzies tam z tylu -> Alert
Jak user jest w oknie -> Brak alertu :]

Wiem ze niestety tak sie nie da, no ale coz.

Moge ewentualnie ustawic czas od ostatniej aktywnosci i pozniej sprawdzac czy po pojawieniu sie nowej wiadomosci czas od ostatniej aktywnosci jest > niz np 5 minut.

Ale nie o takie rozwiazanie mi chodzilo :]
kamil4u
A takie coś:
Kod
<html>
<head>

<title>onblur test</title>

<script type="text/javascript">
var x = false;

function check(){
    x = true; //czy wiadomość <--> x = funckja();
    if(x){
        alert('Komnikat');
        window.focus();
        x = false;
        return true;
    } else {
        setTimeout(check,1000);
    }
}

window.onblur = check;
</script>
</head>

<body>
:)
</body>
</html>
flashdev
Cytat(kamil4u @ 26.10.2010, 14:42:18 ) *
A takie coś:
Kod
//...
    x = true; //czy wiadomość <--> x = funckja();
    if(x){
//...
    } else {
//...
    }
//...


Czy to aby na pewno tak miało być?

Cytat(wizard144 @ 26.10.2010, 13:53:30 ) *
Najlepiej by było gdyby to robiło tak:


Kod
var active = false;

window.onblur = function(){;active = false;};
window.onfocus = function(){;active = true;};


function obsluzWiadomosc(tresc){
    // np. odtworz dzwiek itp.
    if( !active ){
        alert("przyszla wiadomosc o tresci:\n"+tresc);
    }
}

obsluzWiadomosc() // wywolac za kazdym razem, gdy przyjdzie waidomosc
kamil4u
@flashdev: W sumie to to samo - fakt, że lepiej zapisane smile.gif
flashdev
Cytat(kamil4u @ 26.10.2010, 21:52:13 ) *
@flashdev: W sumie to to samo - fakt, że lepiej zapisane smile.gif


Ok, już zrozumiałem Twój kod - przeczytałem komentarz za "x = true;" smile.gif
#luq
Tak btw. wykorzystywanie alertu mnie osobiście się nie podoba, walnij sobie zmianę tytuły strony tak co by było zamiast:
Kod
Moje strona

->
Kod
(1 nowa wiadomość) Moje strona

w dobie kart w przeglądarkach o wiele ładniejsze rozwiązanie imho winksmiley.jpg
wizard144
Dzięki wszystkim za pomoc smile.gif

To było raczej 4 fun.smile.gif

Sprawdze i tam poklikam wam kto i jak pomogl ;P

Thx. :]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.