Bonjour,
Je travaille sur une extension firefox (qui est une sorte de password manager).
J'ex�cute une fonction d'une dll au chargement d'une nouvelle page (onglet) pour certaines url seulement. Cette fonction fait plusieurs secondes pour me retourner une valeur. Pour �viter de freezer le browser, j'ex�cute cette fonction dans un thread en background. Suivant la valeur retourn�e, je remplis un champ dans la page. Cela marche bien pour le chargement d'une page unique.
Voici le code.
J'ai maintenant un probl�me lorsque plusieurs pages se chargent simultan�ment (par exemple lorsqu'on rouvre firefox en ayant sauver les onglets).
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 window.addEventListener("load", function () { gBrowser.addEventListener("load", myObject.onPageLoad, true); }, false); var myObject= { onPageLoad: function(event){ if (event.originalTarget instanceof HTMLDocument) { var doc = event.originalTarget; var win = doc.defaultView; // Wait for the main event to fire. if (win.frameElement) return; else { //do my process in a background thread // ... //then return the value (returnedValue) and I want to fill a field in the page doc.getElementById(idPassField).value="returnedValue"; } } } }
Dans la traitement de la fonction de ma dll, je d�tecte qu'un processus est d�j� en cours (en utilisant la m�moire partag�e) et je peux arr�ter un nouveau traitement. Ainsi, si le traitement se lance dans un second onglet, il s'arr�te et le premier continu dans le premier onglet. Le probl�me vient en fait que je ne puis plus travailler sur mon premier onglet. (Je ne parviens plus � remplir le champ dans mon premier onglet).
var doc = event.originalTarget prend la valeur du contenu du second onglet, donc quand je fais doc.getElementById(idPassField).value j'ai une erreur.
Comment y rem�dier?
Merci d'avance si qqn a une id�e
Partager