2012-09-18 70 views
0

的新前景選項卡中打開本地文件我正在學習如何編寫Firefox擴展。我創建了一個新菜單,並且當單擊菜單項時,我想要在前臺打開一個新選項卡,其中包含內容目錄中包含的本地文件。Firefox擴展,在菜單

例如:

菜單 - >項目1

當選擇項目1,我希望有一個新的選項卡中含有什麼位於/myextension/content/content.html前臺打開。

我在哪裏可以找到如何做到這一點?


爲清楚起見,我可以得到本地文件來打開一個新的標籤,我只是不知道如何在一個新的重點選項卡中打開。

回答

1

我用下面的函數打開選項卡,請確保它尚未打開,焦點切換到它:

 
function OpenAndReuseOneTabPerURL(url) 
{ 

    var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator); 
    var browserEnumerator = wm.getEnumerator("navigator:browser"); 

    // Check each browser instance for our URL 
    var found = false; 
    while (!found && browserEnumerator.hasMoreElements()) 
    { 
     var browserWin = browserEnumerator.getNext(); 
     var tabbrowser = browserWin.gBrowser; 

     // Check each tab of this browser instance 
     var numTabs = tabbrowser.browsers.length; 
     for (var index = 0; index < numTabs; index++) 
     { 

      var currentBrowser = tabbrowser.getBrowserAtIndex(index); 
      if (url == currentBrowser.currentURI.spec) 
      { 

       // The URL is already opened. Select this tab. 
       tabbrowser.selectedTab = tabbrowser.tabContainer.childNodes[index]; 

       // Focus *this* browser-window 
       browserWin.focus(); 

       found = true; 
       break; 

      } 

     } 

    } 

    // Our URL isn't open. Open it now. 
    if (!found) 
    { 

     var recentWindow = wm.getMostRecentWindow("navigator:browser"); 
     if (recentWindow) { 

      // Use an existing browser window 
      recentWindow.delayedOpenTab(url, null, null, null, null); 

     } else { 

      // No browser windows are open, so open a new one. 
      window.open(url); 

     } 

    } 

} 

這樣使用它:

OpenAndReuseOneTabPerURL("http://yoururl.com");