2010-07-04 8 views
1

Je souhaite utiliser ma propre console pour mon extension, où j'imprimerais diverses informations de débogage. Je pensais que je ferais en faisantConseils sur l'implémentation de ma propre console en tant que XPCOM

window.open("chrome://myextension/content/console.xul"..

et imprimer ensuite dans cette fenêtre de zones de texte. Avez-vous déjà vu quelque chose de mal ici? =)

Maintenant, j'ai un petit problème, window.open revient immédiatement et si je puis aller de l'avant et utiliser immédiatement la fonction myconsole.log ("boo"), le contenu de cette fenêtre nouvellement ouvert n'est pas encore chargé et Je vais avoir des erreurs. Cela signifie que je dois attendre que la console ait fini de charger avant de pouvoir imprimer dessus. Quelle serait la bonne façon de le faire? Je pourrais utiliser nsITimer ou thread.sleep à l'intérieur de la méthode log pour continuer à vérifier si elle est déjà chargée, mais je n'aime pas ça. Je ne sais pas non plus comment utiliser correctement l'événement window.onload, car la seule façon que je vois est smth comme window.onload = function() {tout mon code d'extension ..} que je n'aime pas non plus.

Je veux qu'il soit utilisé à tout moment partout en quelque sorte comme celui-ci

console = Cc["@myconsole;1"].getService().wrappedJSObject; 
console.log("foo"); 

Un conseil? Merci pour la patience =)

+0

Vous pouvez maintenir une liste d'éléments pour ouvrir une session, et appelez votre fonction log() dans Essayez un bloc sur une minuterie jusqu'à ce qu'il réussisse, puis videz la liste. –

Répondre