Attendre le chargement d’un autre frame

Petit problème technique qui revient régulièrement. Ce problème n’est pas toujours facile à détecter, car il peut être aléatoire (non reproductible de façon systématique).

Description du problème : j’ai une page HTML comportant 2 ou plusieurs frames. Une fonction javascript sur l’un des frames doit faire appel à un élément de la deuxième frame. Si le temps de chargement de la deuxième frame est assez long et qu’elle n’est donc pas chargée, il est possible que la fonction ne trouve pas l’élément recherché. Il faut donc attendre le chargement de cette deuxième frame.

Pour cela, la solution consiste à faire une boucle utilisant la fonction setTimeout (pour ne pas monopoliser le CPU avec une boucle d’attente).

Voici la façon dont je l’implémente :


var cpt;
function funcky() {
  clearTimeout(funcky);
  // la 2ème frame s'appelle fra2
  if(!top.fra2.document) {
    if (cpt) {
      if (cpt++ > 20) {
        alert("Chargement de la page trop long...");
        return;
      }
    } else cpt=1;
    setTimeout(funcky,200);
    return;
  }
  // ...
  // Ecrire mon code ici
  // ...
}


Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.