2009-04-09 8 views
1

J'essaie de développer un plugin firefox, qui devrait être exécuté, chaque fois qu'une page est chargée.Peut-être quelqu'un peut me dire quel événement l'utiliser. Dans Firefox, document.ready est exécuté quand j'ouvre une nouvelle fenêtre et il ne s'exécute pas, quand j'ouvre un nouvel onglet :(. Toute aide est appréciée. Merci Firefox plugin et document.ready

Répondre

3

A l'origine j'Intéragir DOMContentLoaded, mais cela a pris trop longtemps qu'il ne sera pas le feu jusqu'à ce que Firefox a chargé l'arbre DOM de la page et l'un de ses iframes.

Load était également lente, car elle nécessite la page pour charger complètement, ainsi que toutes ses images.

Finalement, après avoir traversé ceux-ci, ainsi que la mise en place de XPCOM pour nsIWebProgressListener.onLocationChange et quelques autres, j'ai ulti ron réglé sur DOMTitleChanged en tant que tel:

appcontent.addEventListener("DOMTitleChanged", events.onPageLoad, true);

(Notez que DOMTitleChanged semble tirer même lorsque la page HTML n'a pas <title> attribut, ou a un <title> équivalent à la page précédente.)

Je don Je ne me souviens pas à 100% pourquoi je me suis installé sur DOMTitleChanged mais je crois que c'était parce qu'il était le mieux adapté à mes besoins - ce qui est le moyen le plus rapide d'obtenir l'URL naviguée de l'utilisateur sans attendre le chargement simultané chaque manière concevable une nouvelle page est chargée ... nouveaux onglets, changements de page, et tout le reste. Le seul hic, c'est que vous aurez besoin d'ajouter du code pour rechercher manuellement l'URL dans le code de démarrage de superposition de votre module, car à moins que vous ne commenciez à charger la première page dans une nouvelle fenêtre, vous aurez ajouté votre code. l'écouteur d'événement trop tard pour capturer ce chargement de page initial de manière fiable. (En effet, une nouvelle instance isolée de votre module est chargée chaque fois que Firefox ouvre une nouvelle fenêtre.)

Questions connexes