2009-08-19 5 views
0

Mon extension Firefox doit effectuer les opérations suivantes:ne variable existe pas dans d'autres fonctions (javascript et extension Firefox)

  1. Enregistrer l'adresse de la page en cours
  2. Ouvrir une nouvelle page
  3. Mettre la adresse dans le contenu de la nouvelle page si un bouton est pressé

Le problème est de savoir comment enregistrer cette adresse dans une variable. Si l'adresse est enregistrée dans une variable via une fonction sur la première page, la fonction sur la nouvelle page, qui doit afficher l'adresse lorsque le bouton est enfoncé, n'a pas cette variable. Dois-je utiliser une fonction globale ou quelque chose?

function openTab() { 
    //Save an address of current page 
    path=content.location.href; 
    //Open new Tab and select it 
    var tab=gBrowser.addTab("chrome://intabeditor/content/editor.html"); 
    var newTabBrowser = gBrowser.getBrowserForTab(tab); 
    gBrowser.selectedTab=tab; 
} 

function write() { 
    content.body.innerHTML=path; 
} 

La fonction openTab() est exécutée, lorsque le bouton approprié est enfoncé. La même chose avec la fonction write().

+0

Pourriez-vous écrire un code? – CMS

+0

Je sais, ce chemin n'est pas global var, mais je ne peux pas le rendre global, je pense –

Répondre

1
var path = null; 
function openTab() { 
    //Save an address of current page 
    path=content.location.href; 
    //Open new Tab and select it 
    var tab=gBrowser.addTab("chrome://intabeditor/content/editor.html"); 
    var newTabBrowser = gBrowser.getBrowserForTab(tab); 
    gBrowser.selectedTab=tab; 
} 

function write() { 
    if (path!=null) 
    content.body.innerHTML=path; 
} 

--- EDIT Et cet exemple? tout est encapsulé dans xopen:

<script type="text/javascript"> 

    var xopen = function() 
    { 
     this.path = null; 
     this.openTab = function() 
     { 
      //Save an address of current page 
      this.path=content.location.href; 
      //Open new Tab and select it 
      var tab=gBrowser.addTab("chrome://intabeditor/content/editor.html"); 
      var newTabBrowser = gBrowser.getBrowserForTab(tab); 
      gBrowser.selectedTab=tab; 
     } 

     this.write = function() 
     { 
      if (this.path!=null) 
       content.body.innerHTML=this.path; 
     } 
    } 
    var wopen = new xopen(); 

</script> 
<button onclick="wopen.openTab()">openTab</button> 
<button onclick="wopen.write()">write</button> 
+0

Désolé, mais je ne peux pas écrire

var path = null;
en dehors de toute fonction. Les fonctions openTab() et write() sont exécutées lorsque le bouton approprié est enfoncé. –

+0

J'ai pensé que ça ne marcherait pas, mais ça marche! merci :) –

+0

ohh, ça marche trop :(Maintenant, quand j'appuie sur le bouton openTab de la page qui a l'adresse "xxx", puis appuyez sur le bouton openTab dans la page "yyy", 2 nouvelles pages qui ont surgi ont le même this.paht! –

Questions connexes