L'extrait sera essayer de faire un reload pleine page, si des images sur la page, sinon il suffit de faire un redirigent à la même page elle-même.
En utilisant location.reload(true);
, l'argument true
entraîne toujours le rechargement de la page à partir du serveur.
Mais cette condition est toujours true
, puisque document.images
est un HTMLCollection, et il ne sera jamais évaluer à false
, même s'il n'y a pas d'images sur la page, les seules valeurs qui évaluent à false
dans une expression booléenne sont null
, undefined
, 0
, NaN
, une chaîne vide, et bien sûr false
.
Si vous voulez faire que le travail de condition, vous devriez vérifier la propriété length
de document.images
, la propriété length
est numérique et cela signifie qu'il évaluera à false
que lorsque sa valeur est 0
:
if (document.images.length) {
setTimeout(function() {
location.reload(true); // forces a reload from the server
}, 1000*60*15);
} else {
setTimeout(function() {
location.href = location.href;
}, 1000*60*15); // just reloads the page
}
Notez que j'utilise maintenant des expressions de fonction au lieu de chaînes comme premier argument de setTimeout
, si des chaînes sont utilisées, le code sera évalué à l'exécution (équivalent à un appel eval
) et cela n'est pas vraiment considéré comme une bonne pratique.
Wow - merci CMS! Son limpide maintenant et je n'aurais pas testé la longueur de l'image! Merci encore. :) – Abs
Juste une question rapide - et si ma page a des variables GET dedans? Puis-je transmettre cela aussi ou dois-je utiliser le href? – Abs
Juste essayé. Les variables GET seront conservées. – Abs