La communauté ALL HTML c'est 57995 membres à ce jour dont 0 inscrits aujourd'hui et 29 depuis une semaine.

  • imprimer
  • aide

Forum de discussions « Javascript - DHTML - VBScript »

Retrouvez les publications relatives à ces discussions dans notre rubrique javascript.

Rafraîchissement page correct sous Firefox mais pas sous IE.

liste des forums liste des discussions Participer à la discussion

Photo de Beryl Message publié le dimanche 23 mars 2008 à 21 h 52 par Beryl.
Bonjour,

J'ai créé une page web qui permet d'avoir accès à des données d'une installation sensible dans la société où je travaille.
Certaines personnes ont émis le désir de voir la page rafraîchie automatiquement toutes les X secondes, chacune ayant une valeur de X différentes, évidemment ;)

Un petit script javascript piloté par un formulaire intégrant une liste de valeurs (0,5,10,30,60 secondes) fait parfaitement bien le boulot.
Mais voilà, tout fonctionne impeccablement sous Firefox mais pas sous IE...
En fait, sous IE, si je choisi un rafraîchissement toutes les 5 secondes, la page se relance bien mais la liste se repositionne sur la première valeur (0, pas de rafraîchissement).
Sous Firefox, la liste reste bien sur 5 secondes.

Pourquoi ?

N'ayant pas trouvé de réponse, je planche sur un moyen de mémoriser la valeur (cookie) puis de la ré-injecter dans le code HTML de la liste.
Je la mémorise bien, mais impossible de trouver le code permettant de rajouter un SELECTED à la volée dans les options d'un <SELECT></SELECT>
Je l'ai déjà fait avec un script PHP, mais là, le serveur que j'utilise n'intègre pas PHP :(

Si vous avez une idée...

Merci !
Photo de Bul Message publié le lundi 24 mars 2008 à 15 h 54 par Bul.
bonjour,

>>Pourquoi ?
à mon humble avis, tu dois faire quelque chose qui ne convient
pas à IE ( et oui, FF et IE ont des comportements différents ).
cependant, désolé, je ne saurais te dire pourquoi sans le moindre
petit bout de code... je pense que ça se passe à la ligne 268,
mais comme j'ai cassé hier ( t'as pas d'bol ) ma boule de cristal,
je n'en suis pas sûr, je ne vois plus garnd chose.

>>je planche sur un moyen de mémoriser la valeur (cookie)
utiliser un cookie ? on te dira comment faire si c'est
nécessaire. pour l'instant règlons les erreurs... non ?

et

activer le deboggage : Outils/options Internet/Avancés
dans la liste, sous "Navigation" : décocher
° Afficher une notification de chaque erreur de script
° Désactiver le débogage de Scripts (Internet Explorer)
et mieux, télécharger le Debogger IE :
http://www.microsoft.com/downloads/details.aspx?familyid=2f465be0-94fd-4569-b3c4-dffdf19ccd99&displaylang=en

ça aide souvent...
@+
Photo de Beryl Message publié le lundi 24 mars 2008 à 17 h 04 par Beryl.
Ah pardon pour l'oubli ;)

Voici le source du fichier principal (ne tenez pas compte du code spécifique au serveur que j'utilise)
Je viens de m'apercevoir que le problème apparaît aussi sous Konqueror et Opera.
J'ai essayé aussi window.location.reload() et history.go(0) avec le même résultat.


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<!--<meta HTTP-EQUIV="refresh" CONTENT="300">-->
<title>v0.4.2</title>
<link rel="stylesheet" type="text/css" href="style.css">
<!--[if IE]>
<style type="text/css">
@import url(ie.css);
</style
<![endif]-->
<script language="Javascript" type="text/javascript">
<!--
function reload(testnav) {
var temps;
if (navigator.appName=="Microsoft Internet Explorer" && testnav==1) {
alert("Le rafraichissement fonctionne mal sous Internet Explorer...");
}
temps=document.recharge.refresh.value;
if (temps!=0) {
setTimeout("document.location.reload()",temps*1000);
}
}
//-->
</script>
</head>
<body onLoad="reload(0)">
<body>
<p>
<%#ExeSSI,PRINT #0,TIME$%>
</p>
<div id="raffraich">
<form name="recharge">
Rafraichissement :
<select name="refresh" size="1" onChange="reload(1)">
<option value="0">Non</option>
<option value="5">5</option>
<option value="10">10</option>
<option value="20">20</option>
<option value="30">30</option>
<option value="60">60</option>
<option value="120">120</option>
<option value="300">300</option>
</select>
sec.
</form>
</div>
<div id="forages">
<fieldset id="forage1" title="Forage 1" class="fieldset">
<legend align="center">Forage 1</legend>
Etat : <%#ExeSSI,IF F1MA@ THEN PRINT #0,'marche' ELSE PRINT #0,'arr&#65533;t'%>
Consigne : <%#ExeSSI,PRINT #0,INT(F1CONS@/100);%>%<BR>
D&#65533;bit : <%#TagSSI,F1DEB%> m<sup>3</sup>/h<BR>
</fieldset>
<fieldset id="forage2" title="Forage 2" class="fieldset">
<legend align="center">Forage 2</legend>
Etat : <%#ExeSSI,IF F2MA@ THEN PRINT #0,'marche' ELSE PRINT #0,'arr&#65533;t'%>
Consigne : <%#ExeSSI,PRINT #0,INT(F2CONS@/100);%>%<BR>
D&#65533;bit : <%#TagSSI,F2DEB%> m<sup>3</sup>/h<BR>
</fieldset>
<fieldset id="forage3" title="Forage 3" class="fieldset">
<legend align="center">Forage 3</legend>
Etat : <%#ExeSSI,IF F3MA@ THEN PRINT #0,'marche' ELSE PRINT #0,'arr&#65533;t'%>
Consigne : <%#ExeSSI,PRINT #0,INT(F3CONS@/100);%>%<BR>
D&#65533;bit : <%#TagSSI,F3DEB%> m<sup>3</sup>/h<BR>
</fieldset>
</div>

<div id="cuves">
<fieldset id="cuvef1f2" title="Cuve F1/F2" class="fieldset">
<legend align="center">Cuve F1/F2</legend>
Niveau : <%#TagSSI,CUVE_F1F2_NIV%> m<sup>3</sup><BR>
Etat :
<%#ExeSSI,
IF CUVE_F1F2_ETAT@=0 THEN
PRINT #0,'production'
ELSE
IF CUVE_F1F2_ETAT@=1 THEN
PRINT #0,'pr&#65533;paration'
ELSE
IF CUVE_F1F2_ETAT@=2 THEN
PRINT #0,'pr&#65533;lavage'
ELSE
IF CUVE_F1F2_ETAT@=3 THEN
PRINT #0,'lavage'
ELSE
IF CUVE_F1F2_ETAT@=4 THEN
PRINT #0,'pr&#65533;rin&#65533;age'
ELSE
IF CUVE_F1F2_ETAT@=5 THEN
PRINT #0,'rin&#65533;age'
ENDIF
%>
</fieldset>

<fieldset id="cuvef3" title="Cuve F3" class="fieldset">
<legend align="center">Cuve F3</legend>
Niveau : <%#TagSSI,CUVE_F3_NIV%> m<sup>3</sup><BR>
Etat :
<%#ExeSSI,
IF CUVE_F3_ETAT@=0 THEN
PRINT #0,'production'
ELSE
IF CUVE_F3_ETAT@=1 THEN
PRINT #0,'pr&#65533;paration'
ELSE
IF CUVE_F3_ETAT@=2 THEN
PRINT #0,'pr&#65533;lavage'
ELSE
IF CUVE_F3_ETAT@=3 THEN
PRINT #0,'lavage'
ELSE
IF CUVE_F3_ETAT@=4 THEN
PRINT #0,'pr&#65533;rin&#65533;age'
ELSE
IF CUVE_F3_ETAT@=5 THEN
PRINT #0,'rin&#65533;age'
ENDIF
%>
</fieldset>

<fieldset id="cuvetech" title="Cuve technique" class="fieldset">
<legend align="center">Cuve technique</legend>
Niveau : <%#TagSSI,CUVE_TECH_NIV%> m<sup>3</sup>
</fieldset>

<fieldset id="cuvetampon" title="Cuve tampon" class="fieldset">
<legend align="center">Cuve tampon</legend>
Niveau : <%#ExeSSI, IF CUVE_TAMPON@ THEN PRINT #0,'plein' ELSE PRINT #0,'vide'%>
</fieldset>
</div>

<div id="imeca">
<fieldset id="imeca9" title="Imeca 9" class="fieldset">
<legend align="center">Imeca 9</legend>
Etat :
<%#ExeSSI,
IF IMECA9_ETAT@=0 THEN
PRINT #0,'arr&#65533;t'
ELSE
IF IMECA9_ETAT@=1 THEN
PRINT #0,'production'
ELSE
IF IMECA9_ETAT@=2 THEN
PRINT #0,'recyclage'
ELSE
IF IMECA9_ETAT@=3 THEN
PRINT #0,'recyclage forc&#65533;'
ENDIF
%>
</fieldset>

<fieldset id="imeca10" title="Imeca 10" class="fieldset">
<legend align="center">Imeca 10</legend>
Etat :
<%#ExeSSI,
IF IMECA9_ETAT@=0 THEN
PRINT #0,'arr&#65533;t'
ELSE
IF IMECA9_ETAT@=1 THEN
PRINT #0,'production'
ELSE
IF IMECA9_ETAT@=2 THEN
PRINT #0,'recyclage'
ELSE
IF IMECA9_ETAT@=3 THEN
PRINT #0,'recyclage forc&#65533;'
ENDIF
%>
</fieldset>
</div>

<div id="scoma">
<fieldset id="scoma9" title="Scoma 9" class="fieldset">
<legend align="center">Scoma 9</legend>
Etat :
<%#ExeSSI,
IF SCOMA9_ETAT@=0 THEN
PRINT #0,'production'
ELSE
IF SCOMA9_ETAT@=1 THEN
PRINT #0,'lavage CIP'
ELSE
IF SCOMA9_ETAT@=2 THEN
PRINT #0,'rin&#65533;age CIP'
ENDIF
%>
</fieldset>

<fieldset id="scoma10" title="Scoma 10" class="fieldset">
<legend align="center">Scoma 10</legend>
Etat :
<%#ExeSSI,
IF SCOMA10_ETAT@=0 THEN
PRINT #0,'production'
ELSE
IF SCOMA10_ETAT@=1 THEN
PRINT #0,'lavage CIP'
ELSE
IF SCOMA10_ETAT@=2 THEN
PRINT #0,'rin&#65533;age CIP'
ENDIF
%>
</fieldset>

<fieldset id="scoma12" title="Scoma 12" class="fieldset">
<legend align="center">Scoma 12</legend>
Etat :
<%#ExeSSI,
IF SCOMA12_ETAT@=0 THEN
PRINT #0,'production'
ELSE
IF SCOMA12_ETAT@=1 THEN
PRINT #0,'lavage CIP'
ELSE
IF SCOMA12_ETAT@=2 THEN
PRINT #0,'rin&#65533;age CIP'
ENDIF
%>
</fieldset>
</div>

</body>
</html>
Photo de Beryl Message publié le mardi 25 mars 2008 à 19 h 12 par Beryl.
Bon, on m'a refilé la soluce sur fr.comp.lang.javascript (merci Sam !)

<script type="text/javascript">

var url = self.location,
tempo = url.search;

if(tempo.length>1) {
url = url.toString().split('?')[0];
tempo = tempo.substring(1);
}
else tempo = 5000; // défaut = 5 secondes

function rouvre() { self.location = url+'?'+tempo; }

window.onload = function() {
var s = document.airFrais.elements[0].options;
for(var i=0; i<s.length; i++)
if(s.text == tempo/1000) s.selected = true;
if(tempo>0)
setTimeout(rouvre, tempo);
}
</script>
<form name="airFrais">
Rafraichir toutes les
<select onchange="var k = this.selectedIndex;
tempo = this.options[k].text*1000;
rouvre();">
<option>0
<option>1
<option>3
<option selected>5
<option>7
<option>10
</select> secondes.

Et ça tourne nickel !

liste des forums liste des discussions Participer à la discussion

Vous devez obligatoirement vous identifier en tant que membre pour participer à cette discussion.

ACCÉS COMMUNAUTÉ

Rejoignez ALL HTML

Publiez vos articles, actualités, communiqués ... Donnez votre avis, partagez votre réseau, rencontrez d'autres membres et participez à la vie de la communauté.

Les 5 dernières discussions