wacht met refresh tot tabblad actief is geweest

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Joop Slabbekoorn

Joop Slabbekoorn

31/01/2013 12:22:03
Quote Anchor link
hallo

ik heb een mysql gebaseerde verzoekserver gemaakt deze draaid perfect
en heb er een metta refresh opgezet van 1 minuut.
hij controleert of er een nieuw bericht is via php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<? php
if {echo "<script type'text/javascript'>
<!--
var origTitle = document.title;
var hiliteTitle = 'NIEUW VERZOEKJE!';
var toggle = false;

setInterval('wijzigTitel()', 500);

function wijzigTitel()
{
document.title = toggle ? origTitle : hiliteTitle;
toggle = !toggle;
}
-->
</script>"
;}
?>

als er een nieuw bericht is gaat de titel knipperen.

probleem 1 is dat hij nu na een minuut (refresh) niet meer knippert omdat dan de php controle weer gelijk is en wil eigenlijk niet de dj op een button laten klikken van "jaja ik heb het gezien"

probleem 2 is dat hij ook echt een minuut knippert ook als je het na 10 seconden ziet

ben al bezig geweest met .blur en .focus maar heb de ballen verstand van javascript...

dus nu zoek ik iets van een "tabblad is actief dus je mag uit" scriptje en iets van een "wacht met refreshen want tabblad is nog niet actief geweest na het nieuwe bericht" scriptje

alvast bedankt!
 
PHP hulp

PHP hulp

20/04/2024 00:16:21
 
Kris Peeters

Kris Peeters

31/01/2013 12:32:49
Quote Anchor link
Ik herinner me niet dat ik op phphulp ooit een oplossing heb gezien voor deze vraag.

Deze website (Satirische video's uit Frankrijk, al 20 jaar bezig...) detecteert of het tabblad actief is.
Symptomen: je kan de reclame-filmpjes niet skippen; en als je ondertussen een andere window/tab opent, pauzeert de reclame
http://www.canalplus.fr/c-divertissement/pid1787-c-groland.html

Ik zou zelf eens moeten uitzoeken hoe ze het doen.
Mijn eerste idee, is dat ze constant peilen naar de muiscoördinaten (of zoiets); en daaruit kunnen afleiden dat de muis buiten het window staat.
Ik kan me hier volledig vergissen.
 
Kris Peeters

Kris Peeters

01/02/2013 20:40:06
Quote Anchor link
Het is eigenlijk verbazend eenvoudig.
Gewoon een focus/blur op window zetten
(dat ik daar niet eerder aan gedacht had ...)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
$(document).ready(function($) {
    $(window).blur(function(e) {
      $('#message').html('niet actief');
    });
    $(window).focus(function(e) {
      $('#message').html('actief');
    });
});
</script>
<h3>Hello</h3>
<div id="message">actief</div>
 
Remco schrubben

remco schrubben

01/02/2013 21:35:36
Quote Anchor link
Kris, ik ben niet zo erg thuis in deze script taal zoals hier javascript.
Daarom zou ik het volgende willen vragen.

Hoe gebruik ik deze script van u?
Mag ik het volgende begrijpen er van.
- Dit deel in een als voorbeeld message.php zetten.
- In de <div> zet ik dan een php script die kijkt of er een bericht in database staat.
- Zodra in de database een bericht bij is gekomen word de <div> zichtbaar.

Begrijp ik zo uw stukje code goed?
Gewijzigd op 01/02/2013 22:57:45 door remco schrubben
 
Joop Slabbekoorn

Joop Slabbekoorn

01/02/2013 22:06:26
Quote Anchor link
toppie kris!!! nu moeten ze nog aan elkaar.... help?!

Toevoeging op 01/02/2013 23:18:37:

zou eigelijk zoiets moeten worden (als nieuwbericht = true; en tabblad is inactief laat titel knipperen en zet metta refresh op pauze totdat tabblad actief is.)

dit is alvast wat maar hoe maak ik onderstaande code werkend?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
$(document).ready(function($) {
    $(window).blur(function(e) {
      
var origTitle = document.title;
var hiliteTitle = 'NIEUW VERZOEKJE!';
var toggle = false;

setInterval('wijzigTitel()', 500);

function wijzigTitel()
{
document.title = toggle ? origTitle : hiliteTitle;
toggle = !toggle;
}
    });
    $(window).focus(function(e) {
      $('#message').html('actief');
    });
});
</script>


Toevoeging op 01/02/2013 23:40:30:

heb hier een javascript auto refresh scriptje:

head?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
var timer = null;
function auto_reload()
{
  window.location = 'http://www.site.nl/pagina.extensie';
}

body!
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
onload="timer = setTimeout('auto_reload()',60000);"


Toevoeging op 01/02/2013 23:51:01:

werkt volgends mij niet ???
snap niets van javascript hah heeellllluuuuuppppp :-P
Gewijzigd op 01/02/2013 23:23:06 door Joop Slabbekoorn
 
Kris Peeters

Kris Peeters

02/02/2013 02:04:58
Quote Anchor link
Remco schrubben op 01/02/2013 21:35:36:
Hoe gebruik ik deze script van u?


Wat heb je nodig? Wat wil je bereiken?
Eventueel een ander topic aanmaken

EDIT:
Ah, okay; samen met mijn laatste suggestie zouden beide ongeveer het zelfde moeten opleveren.

----------
Joop Slabbekoorn op 01/02/2013 22:06:26:
...hoe maak ik onderstaande code werkend?


setInterval:
Ofwel geef je de functienaam, zonder quotes, en zonder () ;
ofwel een functie-definitie. Dito voor setTimeout

setInterval(function() {
wijzigTitel();
},
500
);

of dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$(document).ready(function($) {
    $(window).blur(function(e) {
              
        var origTitle = document.title;
        var hiliteTitle = 'NIEUW VERZOEKJE!';
        var toggle = false;

        function wijzigTitel() {
            document.title = toggle ? origTitle : hiliteTitle;
            toggle = !toggle;
        }
        setInterval(wijzigTitel, 500);

    });
    $(window).focus(function(e) {
      $('#message').html('actief');
    });
});


Dat was de bedoeling?

------

Joop Slabbekoorn op 31/01/2013 12:22:03:
... en heb er een metta refresh opgezet van 1 minuut.
hij controleert of er een nieuw bericht is via php ...


Zullen we dat wat eleganter oplossen? Met een Ajax request; die laadt dan de nieuwe items zonder dat de pagina wordt ververst
Gewijzigd op 02/02/2013 02:14:45 door Kris Peeters
 
Wouter J

Wouter J

02/02/2013 10:22:25
Quote Anchor link
Of je gebruikt de gloednieuwe Page Visibility API, merk op dat dit nog niet overal ondersteund wordt

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
document.addEventListener('visibilitychange', function (e) {
    console.log(
        'hidden:' + document.hidden,
        'state:' + document.visibilityState
    );
}, false);
 
Joop Slabbekoorn

Joop Slabbekoorn

02/02/2013 13:23:25
Quote Anchor link
Kris Peeters op 02/02/2013 02:04:58:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<script type="text/avascript">
$(document).ready(function($) {
    $(window).blur(function(e) {
              
        var origTitle = document.title;
        var hiliteTitle = 'NIEUW VERZOEKJE!';
        var toggle = false;

        function wijzigTitel() {
            document.title = toggle ? origTitle : hiliteTitle;
            toggle = !toggle;
        }
        setInterval(wijzigTitel, 500);

    });
    $(window).focus(function(e) {
      $('#message').html('actief');
    });
});
</script>


Dat was de bedoeling?


als ik het zo zie wel denk ik maar het werkt niet

Joop Slabbekoorn op 31/01/2013 12:22:03:
... en heb er een metta refresh opgezet van 1 minuut.
hij controleert of er een nieuw bericht is via php ...

Quote:
Zullen we dat wat eleganter oplossen? Met een Ajax request; die laadt dan de nieuwe items zonder dat de pagina wordt ververst

graag zelfs! maar omdat ik geen verstand van javascript heb en het zaterdag toch min of meer werkend wou hebben... heb ik nu dus controle via php.

zal nog een keer uitleggen: gaat om een verzoekserver die als tabblad open staat maar waar de dj niet constant naar kijkt. eerst zat er een refresh knop op maar dan kwam het voor dat wanneer de luisteraar een verzoekje deed de dj pas na een half uur refresht en dan na een kwartier het verzoekje afhandeld. het streven is om toch wel binnen een kwartier het verzoek af te handelen. dus ik dacht autorefresh en een checker wat ik nu zo doe:

--> lees aantalregels.txt en zet het in $regels -> check aantal tabelregels en zet het in $numrows -> vergelijk $regels met $numrows -> als het gelijk is -> ga verder -> anders <javascript-wijzigtitel> -> schrijf $numrows naar aantalregels.txt <--

dus vandaar ook de refresh, elke minuut voert hij dit uit. en dat werkt goed maar is niet DE manier natuurlijk...

vandaar mijn vraag naar een javascriptje dat:
1: berichten checkt en erbij zet
2: als er een nieuw verzoek is titel laat knipperen totdat het gezien is.
3: graag zelfs ook nog het/de nieuwe verzoekje(s) een andere kleur geven totdat er een muis overheen is gegaan.(dit lukt alleen als hij niet meer refresht
4: liefst ook nog titel icoon mee laten knipperen...

Toevoeging op 02/02/2013 13:30:30:

Wouter J op 02/02/2013 10:22:25:
Of je gebruikt de gloednieuwe Page Visibility API, merk op dat dit nog niet overal ondersteund wordt

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
document.addEventListener('visibilitychange', function (e) {
    console.log(
        'hidden:' + document.hidden,
        'state:' + document.visibilityState
    );
}, false);

oke... en hoe gebruik ik dat in mijn geval? snap er niets van...

in ieder geval al bedankt voor de hulp tot nu toe...
Gewijzigd op 02/02/2013 14:59:47 door Joop Slabbekoorn
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.