Comment détecter le changement de doc dans un iframe
33 réponses
Asterbing
Bonjour. J'ai posé un problème dans comp.lang.javascript mais n'aboutis
pas. Tout est dit dans le fichier HTML dont je copies le contenu ci-
dessous (désolé, c'est en anglais parce que prévu pour un ng anglais à
l'origine ; je peux traduire si utile). Vos lumières m'intéressent.
-- DEBUT DE COPIE --
<html>
<head>
<title>Check Statistics</title>
<script type="text/javascript" language="JavaScript"><!--
var f = document.getElementById("stats");
function WaitStats4Checking(){
if (f.document.readyState == "complete"){Check();}
else{setTimeout("WaitStats4Checking()",50);}}
function GetStats(){
var f = document.getElementById("stats");
f.setAttribute("src","/cgi-bin/getstats.exe");
WaitStats4Checking();}
//--></script>
</head>
<body>
<p>Initially, the iframe contains help.htm which just says "Not any
statistic loaded. Click 'Get Statistics'" for which a heigh of 20px is
enough.
<br><br>
When user click on the 'Get Statistics' link, the GetStats() javascript
function run the getstats.exe CGI script which returns a generated
document in iframe.
<br><br>
When this generated document is well loaded in iframe (not before), the
Check() javascript function should be launched.
<br><br>
Current problem is that (f.document.readyState == "complete") is always
true even if generated document is not fully loaded.
<br><br>
How to solve this ? Maybe going through onreadystatechange to launch
WaitStats4Checking() rather than at the end of GetStats(), but how ?</p>
Le 15/03/2006 02:02, ASM répondit à Laurent Vilday :
Je pense qu'il faut absolument passer tout ton code à jslint, http://www.jslint.com/
Je ne connaissais pas, mais je vais garder le lien.
Hou la la ! qu'il est chatouilleux ce jslink !
lint, pas link. Tu dois être trop jeune pour connaître ça, mais le nom vient du programme lint qui servait à verifier les programmes C avant que les compilateurs ne le fassent correctement.
il lui faut absolument un { après une condition et une ; après la } de fermeture
à ce que j'ai compris sur un mini test.
Avec quel type de condition as-tu rencontré ce comportement ? D'après la doc sur le site, il ne demande pas de point-virgule à la fin d'un for, d'un if ou d'un while (ni à la fin de function, switch ou try).
-- Olivier Miakinen Troll du plus sage chez les conviviaux : le nouveau venu, avec son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
Le 15/03/2006 02:02, ASM répondit à Laurent Vilday :
Je pense qu'il faut absolument passer tout ton code à jslint,
http://www.jslint.com/
Je ne connaissais pas, mais je vais garder le lien.
Hou la la !
qu'il est chatouilleux ce jslink !
lint, pas link. Tu dois être trop jeune pour connaître ça, mais le nom
vient du programme lint qui servait à verifier les programmes C avant
que les compilateurs ne le fassent correctement.
il lui faut absolument un { après une condition
et une ; après la } de fermeture
à ce que j'ai compris sur un mini test.
Avec quel type de condition as-tu rencontré ce comportement ? D'après
la doc sur le site, il ne demande pas de point-virgule à la fin d'un
for, d'un if ou d'un while (ni à la fin de function, switch ou try).
--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
Le 15/03/2006 02:02, ASM répondit à Laurent Vilday :
Je pense qu'il faut absolument passer tout ton code à jslint, http://www.jslint.com/
Je ne connaissais pas, mais je vais garder le lien.
Hou la la ! qu'il est chatouilleux ce jslink !
lint, pas link. Tu dois être trop jeune pour connaître ça, mais le nom vient du programme lint qui servait à verifier les programmes C avant que les compilateurs ne le fassent correctement.
il lui faut absolument un { après une condition et une ; après la } de fermeture
à ce que j'ai compris sur un mini test.
Avec quel type de condition as-tu rencontré ce comportement ? D'après la doc sur le site, il ne demande pas de point-virgule à la fin d'un for, d'un if ou d'un while (ni à la fin de function, switch ou try).
-- Olivier Miakinen Troll du plus sage chez les conviviaux : le nouveau venu, avec son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
ASM
Le 15/03/2006 02:02, ASM répondit à Laurent Vilday :
Hou la la ! qu'il est chatouilleux ce jslink !
lint, pas link. Tu dois être trop jeune
merci du compliment :-)
vient du programme lint qui servait à verifier les programmes C
de quoi tu causes ?
Avec quel type de condition as-tu rencontré ce comportement ? D'après la doc sur le site, il ne demande pas de point-virgule à la fin d'un for, d'un if ou d'un while (ni à la fin de function, switch ou try).
me semble avoir compris qu'il veuille : for(var i=0;i<L.length;i++) { if(L[i]) L[i].display=F[i].display===''?'none':''; }; ou même : for(var i=0;i<L.length;i++) { if(L[i]) { L[i].display=F[i].display===''?'none':''; }; };
-- Stephane Moriaux et son [moins] vieux Mac
Le 15/03/2006 02:02, ASM répondit à Laurent Vilday :
Hou la la !
qu'il est chatouilleux ce jslink !
lint, pas link. Tu dois être trop jeune
merci du compliment :-)
vient du programme lint qui servait à verifier les programmes C
de quoi tu causes ?
Avec quel type de condition as-tu rencontré ce comportement ? D'après
la doc sur le site, il ne demande pas de point-virgule à la fin d'un
for, d'un if ou d'un while (ni à la fin de function, switch ou try).
me semble avoir compris qu'il veuille :
for(var i=0;i<L.length;i++) {
if(L[i]) L[i].display=F[i].display===''?'none':''; };
ou même :
for(var i=0;i<L.length;i++) {
if(L[i]) { L[i].display=F[i].display===''?'none':''; };
};
Le 15/03/2006 02:02, ASM répondit à Laurent Vilday :
Hou la la ! qu'il est chatouilleux ce jslink !
lint, pas link. Tu dois être trop jeune
merci du compliment :-)
vient du programme lint qui servait à verifier les programmes C
de quoi tu causes ?
Avec quel type de condition as-tu rencontré ce comportement ? D'après la doc sur le site, il ne demande pas de point-virgule à la fin d'un for, d'un if ou d'un while (ni à la fin de function, switch ou try).
me semble avoir compris qu'il veuille : for(var i=0;i<L.length;i++) { if(L[i]) L[i].display=F[i].display===''?'none':''; }; ou même : for(var i=0;i<L.length;i++) { if(L[i]) { L[i].display=F[i].display===''?'none':''; }; };
-- Stephane Moriaux et son [moins] vieux Mac
Olivier Miakinen
Avec quel type de condition as-tu rencontré ce comportement ? D'après la doc sur le site, il ne demande pas de point-virgule à la fin d'un for, d'un if ou d'un while (ni à la fin de function, switch ou try).
me semble avoir compris qu'il veuille : for(var i=0;i<L.length;i++) { if(L[i]) L[i].display=F[i].display===''?'none':''; }; ou même : for(var i=0;i<L.length;i++) { if(L[i]) { L[i].display=F[i].display===''?'none':''; }; };
Moi j'ai compris qu'il veut absolument les accolades, mais pas forcément les point-virgules pour if ou for :
for (var i=0; i<L.length; ++i) { if (L[i]) { L[i].display = (F[i].display === '') ? 'none' : ''; } }
-- Olivier Miakinen Troll du plus sage chez les conviviaux : le nouveau venu, avec son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
Avec quel type de condition as-tu rencontré ce comportement ? D'après
la doc sur le site, il ne demande pas de point-virgule à la fin d'un
for, d'un if ou d'un while (ni à la fin de function, switch ou try).
me semble avoir compris qu'il veuille :
for(var i=0;i<L.length;i++) {
if(L[i]) L[i].display=F[i].display===''?'none':''; };
ou même :
for(var i=0;i<L.length;i++) {
if(L[i]) { L[i].display=F[i].display===''?'none':''; };
};
Moi j'ai compris qu'il veut absolument les accolades, mais pas forcément
les point-virgules pour if ou for :
for (var i=0; i<L.length; ++i) {
if (L[i]) {
L[i].display = (F[i].display === '') ? 'none' : '';
}
}
--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
Avec quel type de condition as-tu rencontré ce comportement ? D'après la doc sur le site, il ne demande pas de point-virgule à la fin d'un for, d'un if ou d'un while (ni à la fin de function, switch ou try).
me semble avoir compris qu'il veuille : for(var i=0;i<L.length;i++) { if(L[i]) L[i].display=F[i].display===''?'none':''; }; ou même : for(var i=0;i<L.length;i++) { if(L[i]) { L[i].display=F[i].display===''?'none':''; }; };
Moi j'ai compris qu'il veut absolument les accolades, mais pas forcément les point-virgules pour if ou for :
for (var i=0; i<L.length; ++i) { if (L[i]) { L[i].display = (F[i].display === '') ? 'none' : ''; } }
-- Olivier Miakinen Troll du plus sage chez les conviviaux : le nouveau venu, avec son clan, s'infiltre dans les groupes de nouvelles. (3 c.)