Javascript

Fermé
yahuwa - 16 déc. 2008 à 04:23
 yahuwa - 16 déc. 2008 à 16:20
Bonjour, j'ai un système de messagerie privé rafraichi toutes les 1mn cette fonction est en javascript et fonctionne parfaitement mais la question que je me pose maintenant c'est comment conserver l'execution de cette page quand je suis sur un autre onglet on dirait que tous est en veille jusqu'a ce que je revienne sur ce fameux onglet et la il se remets a fonctionner !
Comment obliger l'execution d'un javascript même si je suis dans un autre onglet ou autre fenetre ?
(tester sur firefox et ie même resultats)
Merci d'avance car je n'ai rien trouvé depuis 3jours et je suis persuadé que ça existe j'avais déjà vu un site web qui utiliser cela

3 réponses

hello,

pour faire ton refresh toutes les mins tu utilises quelle méthode?

tu peux essayer d'utiliser la fonction suivante :
setTimeout("maMéthode()", 60000);
<script type="text/javascript">
function writediv(texte)
{
document.getElementById('msgbox').innerHTML = texte;
}

function writebaloon()
{
var swf = '<object height="1" width="1" data="baloon.swf" type="application/x-shockwave-flash"><param value="transparent" name="wmode"/><param value="true" name="allowFullScreen"/><param value="always" name="allowScriptAccess"/><param value="baloon.swf" name="movie"/><param value="false" name="menu"/><param value="high" name="quality"/></object>';
document.getElementById('baloonbox').innerHTML = swf;
}

function checkmsg()
{
texte = file('http://ww.monsite.com/querymsg.php?uid='+escape(<?php echo $_SESSION['idc'];?>))
if(texte == 0)
writediv('<a class="menuMain" href="msgs.php">Messages</a>');
else if(texte >= 1) {
writediv('<a class="menuMain" href="msgs.php">Messages <b>('+texte+')</b></a>');
writebaloon();
}
setTimeout(checkmsg, 60000);
}

function file(fichier)
{
if(window.XMLHttpRequest) // FIREFOX
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // IE
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else
return(false);
xhr_object.open("GET", fichier, false);
xhr_object.send(null);
if(xhr_object.readyState == 4) return(xhr_object.responseText);
else return(false);
}
</script>
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
16 déc. 2008 à 10:27
Le script javascript est dans une page html donc si tu quites cette page c'est normal qu'il ne fonctionne plus

une solution:

- tu mets ton script javascript dans un fichier externe scriptJS.js par exemple (sans les balises <script ... ></script>)

dans toutes tes pages tu mets <script language="javascript" src="chemin_relatif_vers_scriptJS.js"></script>

@lain
Bonjour et merci beaucoup de vos réponses, j'utilise effectivement setTimeout("chekmsg()", 60000); bien vu ;) mais j'ai refait quelque test ce midi et il s'avere qu'en realité quand je change d'onglet le javascript continue bien de s'executer dans la page c'etais juste l'objet flash qui ne s'execute que si on dessus dés que je suis sur un autre onglet je n'entends plus l'alerte sonore mais le rafraichissement lui continue bien de se faire.

J'ai donc deux question :
comment écrire le code pour que le son flash soit executé même si on est sur un autre onglet ?
comment savoir quand l'utilisateur a gardé la l'onglet ouvert mais se trouve sur une autre page ou autre onglet (il me semble que c'est javascript focus) ?

Merci d'avance