Forums : Extensions

Aller à la discussion :  Plus récente Plus ancienne

# Extension 'Capture URL'

Envoyé par : Inno

Date : 01/02/2009 01:45

Bonjour à tous,

Pour ma première extension j'ai décidé d'éssayé de suivre le tutorial pour capturer une URL et faire une redirection (http://xulfr.org/wiki/RessourcesLibs/CapturerChangementURL).

Mon problème ne vient de je ne sais d'où. (:-S)

Mon extension s'installe correctement dans Firefox, cependant rien n'intervient. Si je tape : http://www.google.fr/ dans la barre d'adresse, je n'obtient aucune modification.

Je me permet de vous mettre le lien de mes fichiers :

  • http://fileupload.filetac.com/file/7b3fb7a4de7ec4259bb485debb97996d7438788d

Je vous remercie d'avance.

Cordialement, Inno.

# Re: Extension 'Capture URL'

Envoyé par : Paul Rouget

Date : 01/02/2009 04:26

Il faut que tu fasses ça dans browser.xul, dans un overlay, et pas dans ta propre page XUL.

# Re: Extension 'Capture URL'

Envoyé par : Inno

Date : 01/02/2009 16:35

Merci pour ta réponse.

Donc cela devrait ressembler à quelque chose comme sa (ci-dessous) :

Avec cela j'obtiens que le premier onglet reste toujours à l'adresse : http://www.google.fr/ (bien que la page puisse changer) et il est impossible de le fermer.

:-S

  • chrome.manifest
content geturl chrome/content/
locale geturl fr chrome/locale/fr_FR/
locale geturl us chrome/locale/en_US/
skin geturl classic/1.0 chrome/skin/
overlay chrome://browser/content/browser.xul chrome://geturl/content /overlay.xul
  • overlay.xul
<?xml version="1.0" encoding="ISO-8859-1"?>

<!-- Ici le fichier Javascript que je veux executer -->	
<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript" src="chrome://geturl/content/geturl.js"/>
</overlay>
  • geturl.js
//Mon fichier Javascript pour charger une page à la place de Google
var urlChangeListener =
    {
        // fonction appelée à chaque changement de page ou d'onglet
       onLocationChange:function(aWebProgress, aRequest, aLocation)
       {
           if (aLocation) // on verifie qu'il y a une url indiquée
           {
               // aLocation.spec permet de récuperer l'url à charger
               var url = aLocation.spec;

               // Petit test pour voir si url == "http://www.google.fr/"
               if (url == "http://www.google.fr/")
               {
                   // Si le test est vrai, alors on change la valeur "location"
                   // du navigateur ce qui correspond a une redirection en interne
                   window._content.document.location = "http://xulfr.org";
               }
           }
       },

       // on définit les autres fonctions de l'interface, même si on n'y fait rien
       // sinon cela provoque des erreurs javascript

       onProgressChange  :function ( webProgress, request, curSelfProgress,
             maxSelfProgress, curTotalProgress, maxTotalProgress ){ },

       onSecurityChange: function ( webProgress, request, state ){ },

       onStateChange: function ( webProgress, request, stateFlags, status){ },

       onStatusChange: function( webProgress,request , status, message ){ },

       QueryInterface : function (iid) {
          if(!iid.equals(Components.interfaces.nsISupports) &&
             !iid.equals(Components.interfaces.nsIWebProgressListener))
                 throw Components.results.NS_ERROR_NO_INTERFACE;
          return this;
       }
   };

    // Ici on déclare maintenant notre listener auprés du tabbrowser de firefox
   window.getBrowser().addProgressListener( urlChangeListener ,  Components.interfaces.nsIWebProgress.NOTIFY_STATE_DOCUMENT);

Merci d'avance. Cordialement, Inno

# Re: Extension 'Capture URL'

Envoyé par : Inno

Date : 05/02/2009 07:10

J'ai beau modifié un peu tout, je ne vois pas du tout. Personne n'a une idée ? :/

# Re: Extension 'Capture URL'

Envoyé par : Paul Rouget

Date : 10/02/2009 20:01

Tu n'as aucune erreur dans ta console js ? Es tu en mode strict ?

# Re: Extension 'Capture URL'

Envoyé par : Inno

Date : 10/02/2009 22:34

Bonsoir,

Après beaucoup de modifications, effectivement je viens de trouver ou se situe l'erreur. En effet c'est une erreur du au Javascript.

J'ai modifié en me redirigeant un peu plus vers ce que je désirai faire avec mon extension et ceci à l'air de plutôt bien fonctionner.

Maintenant je cherche a envoyer l'adresse récupérer dans une base de donnée, mais je vais chercher tout sa (enfin si vous avez des pistes je suis preneur ;-)).

//Mon fichier Javascript pour afficher la page actuelle dans un pop-up
var urlChangeListener =
   {
       // fonction appelée à chaque changement de page ou d'onglet
       onLocationChange:function(aWebProgress, aRequest, aLocation)
       {
           if (aLocation) // on verifie qu'il y a une url indiquée
           {
               // aLocation.spec permet de récuperer l'url à charger
               var url = aLocation.spec;

               // Petit test pour voir si url == "http://www.test.fr/"
			var urlbaradresse = document.getElementById("urlbar").inputField.value;

               alert(url);
		}
       },

       // on définit les autres fonctions de l'interface, même si on n'y fait rien
       // sinon cela provoque des erreurs javascript

       onProgressChange  :function ( webProgress, request, curSelfProgress,
             maxSelfProgress, curTotalProgress, maxTotalProgress ){ },

       onSecurityChange: function ( webProgress, request, state ){ },

       onStateChange: function ( webProgress, request, stateFlags, status){ },

       onStatusChange: function( webProgress,request , status, message ){ },
 
       QueryInterface : function (iid) {
          if(!iid.equals(Components.interfaces.nsISupports) &&
             !iid.equals(Components.interfaces.nsIWebProgressListener))
                 throw Components.results.NS_ERROR_NO_INTERFACE;
          return this;
       }
   };

   // Ici on déclare maintenant notre listener auprés du tabbrowser de firefox
   window.getBrowser().addProgressListener( urlChangeListener , Components.interfaces.nsIWebProgress.NOTIFY_STATE_DOCUMENT);

Merci beaucoup pour votre aide en tout cas.

Cordialement, Inno.

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.