Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Intercepter le chargement d'une page avec progressListener

Envoyé par : psycofdj

Date : 24/02/2013 19:36

Bonjour a tous,

J'essaye d'intercepter le chargement d'une page depuis mon extension firefox avec l'objectif de lancer un bout de code, pour chaque page web visitée au moment où elles ont fini de se charger (arbre DOM disponible).

Pour cela, j'utilise la methode addProgressListener de l'objet gBrowser, et mon handler implemente la callback onStateChange. Cette approche fonctionne relativement bien.

Par contre, je ne comprends pas pourquoi la callback onStateChange est appelée plusieurs fois sur certaines pages web. Et quand je dis plusieurs fois, j'entends plusieurs fois avec les flags STATE_STOP et STATE_IS_WINDOW. C'est comme si la page finissait de charger "plusieurs fois"...

Manifestement, il y a quelque chose qui m'echappe mais je n'arrive pas a mettre la main dessus. Dans le code ci-dessous, une page peut proquer deux alert.

var handler = {
 onStateChange: function(p_webProgress, p_request, p_state, p_error) {
   if ((p_state & STATE_STOP) && (p_state & STATE_IS_WINDOW) && (p_error == 0)) {
      alert("dom disponible");
   }
 }
 onProgressChange: function() {},
 onStatusChange:   function() {},
 onProgressChange: function() {},
 onSecurityChange: function() {},
 onLocationChange: function() {}, 
};

gBrowser.addProgressListener(handler);

Si quelqu'un peut éclairer sur ce point... je suis également preneur d'une autre approche pour détecter que le DOM de la page est disponible.

Merci d'avance !

# Re: Intercepter le chargement d'une page avec progressListener

Envoyé par : thefab

Date : 15/03/2013 02:14

Est-ce qu'il y a des frames ou iframes dans les pages en question ? Si oui c'est certainement que l'évènement est lancé pour la page ET les pages dans des frames... Sinon... je vois pas ;-(

Fab

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.