Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX] - Rozpoznanie czy karta w przeglądarce jest aktywna
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Michael2318
Czy jest jakakolwiek możliwość, aby sprawdzić czy user obecnie korzysta ze strony? Mam skrypt AJAX, który uruchamia się co 5 sekund, pobiera takie same powiadomienia jak na facebook'u, tyle że na forum. I teraz właśnie chciałbym dorzucić bajer, że jeśli user nie korzysta z mojej strony w chiwli obecnej to skrypt zamiast ładować się co 5 sekund, będzie ładował się np. co 30 sekund, natomiast po jakimś synptomie iż korzysta ze strony - ustawienia domyślne zostaną przywrócone (tzn. znów skrypt będzie wczytywał się co 5 sekund).
Jest taka możliwość?
nospor
Problem z ajaxem nie ma żadnego związku.... przenosze.

Co do samego pytania:
google: js active browser
Michael2318
Mam problemz działaniem tego. Otóz mam taki kod:

Kod
            var focused = true;

            window.onfocus = function() {
                focused = true;
            };
            window.onblur = function() {
                focused = false;
            };
            
            if ( focused == true )
            {
                setTimeout('requestNewInfo();', (updateIn * 1000));
            }
            else
            {
                setTimeout('requestNewInfo();', (updateIn * 10000));
            }


Jednak widzę, że cały czas sprwadza się pierwszy warunek (true) niezależnie czy karta jest aktywna czy też nie. Robię jakiś błąd czy po prostu ten sposób jest zły?
nospor
No ale to:
if ( focused == true )
{
setTimeout('requestNewInfo();', (updateIn * 1000));
}
else
{
setTimeout('requestNewInfo();', (updateIn * 10000));
}

musi być odpalane co jakis czas a nie raz na początku.... raz na początku browser zawsze jest aktywny.
Michael2318
Kod
function requestNewInfo()
{
    $.ajax({
        type: 'POST',
        cache: false,
        dataType: 'json',
        url: 'news_info.php',
        data: 'last='+lastMessageID,
        beforeSend: function(xhr) {xhr.setRequestHeader('News','news_js');},
        success: NewsMessagesSucces,
        complete: function()
        {
            var focused = true;

            window.onfocus = function() {
                focused = true;
            };
            window.onblur = function() {
                focused = false;
            };
            
            if ( focused == true )
            {
                setTimeout('requestNewInfo();', (updateIn * 1000));
            }
            else
            {
                setTimeout('requestNewInfo();', (updateIn * 10000));
            }
        }
    });
}


Funkcja wczytywana jest jako zdarzenie onload, po wczytaniu, wczytuje się ponownie co jakiś czas, więc jeśli dobrze to rozumiem to jest ok, bo przy każdym powtarzaniu się, sprawdzane jest czy browser jest aktywne. Jeśli tak nie jest to prosze mnie uświadomić smile.gif
nospor
o to:
var focused = true;

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

Ma być raz w całym skrypcie a nie za każdym razem.
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.