2015-10-18 26 views
2

我使用Firefox Add-on SDK開發Firefox插件生成的.xpi文件。 我都跟着Getting Started tutorialFirefox插件與「JPM運行」的作品,而不是與蒙山「JPM XPI」

火狐版本:41.0.2
我的過程是:

  1. jpm run - >確定的附加工作正常
  2. jpm xpi - >確定:創建@ myAddon.xpi( JPM [信息]成功創建的.xpi在...)
  3. 使用@ myAddon.xpi - > NOK
    當我試圖安裝該插件在我的Firefox(附加 - >從文件安裝 - >@ myAddon.xpi),我有一個消息「成功安裝」。看起來不錯。但是,附加功能不起作用。什麼都沒發生。

那麼,爲什麼測試jpm run行,但安裝.xpi文件後不工作?

我可以跟大家分享的代碼,但這種情況是如何發生的呢?如果它在測試中起作用,我預計它在「發佈」中起作用。 我沒有收到任何錯誤或警告。

高層:

Index.js

pageMod.PageMod({ 
    include: "*", 
    contentScriptFile: [data.url("jquery-1.11.3.min.js"), data.url("./Compute.js")], 
    onAttach: function (worker) { 
     var currentUrl = tabs.activeTab.url; 
     param = currentUrl; 
     Request({ 
      url: param, 
      onComplete: function (response) { 
       var parsed = JSON.parse(response.text); 
       worker.port.emit('got-request', parsed); 
      } 
     }).get(); 
    } 

數據/ Compute.js

self.port.on('got-request', function (data) { 
    console.log(data); 
}); 

編輯(從評論移動):
我找到的東西有趣的....取決於FireFox的隱私水平e插件將工作與否。 (Options-> Privacy-> History「Remember history」或「Never remember history」) - 記住歷史記錄 - > addOn OK - 「Never never history history」 - > addOn NOK任何想法爲什麼

+1

我發現了一些有趣的東西...... 根據FireFox的隱私級別,插件可以工作與否。 (選項 - >隱私 - >歷史記錄「記住歷史記錄」或「永不記憶歷史記錄」) - 記住歷史記錄 - > addOn OK - 「永遠不要記錄歷史記錄」 - > addOn NOK 任何想法爲什麼? – user5023028

+1

代碼片段看起來沒問題,把附件上傳到github並分享鏈接。 – Nandu

+1

@ user5023028默認情況下,jpm插件不能在私人模式下工作。你必須在你的package.json中添加一個密鑰才能在私有模式下工作。 – Noitidart

回答

0

正如您已經確定,如果你希望你的Firefox插件SDK插件在你需要在你package.json文件與true值有增加的關鍵private-browsingPrivate Browsing mode工作。

如果您正在使用沒有其他permissions,你可以添加一行到你的包。JSON文件看起來像:

"permissions": {"private-browsing": true} 

Firefox documentation on writing SDK add-ons for private browsing方式明確規定,當下列任何一項是(重點煤礦)的require("sdk/private-browsing").isPrivate()方法將返回true:

  • 私人窗口,或
  • 屬於私人窗口的選項卡或
  • 與在私人窗口中託管的文檔關聯的工作人員
  • 任何窗口,標籤,或工人如果瀏覽器已配置爲從不記住歷史(選項 - >與隱私>歷史)

如果你沒有"private-browsing": true,那麼,作爲documentation states,以下將情況(重點煤礦):

  • windows模塊不會顯示任何私人瀏覽器窗口,產生對私人瀏覽器窗口的任何事件,或L等附加上打開的任何私人瀏覽器窗口
  • tabs模塊不會列出屬於私人的瀏覽器窗口的任何標籤,並附加將不會收到任何事件這樣的標籤
  • 任何ui成分會不能顯示不會在上下文菜單中顯示專用的瀏覽器窗口
  • 使用context-menu創建的任何菜單或菜單項屬於私人的瀏覽器窗口
  • page-mod模塊不會的內容腳本附加到屬於私人瀏覽器文件windows
  • 任何panel對象將不會被顯示,如果活動窗口是一個私人的瀏覽器窗口
  • selection模塊將不包括在私人瀏覽器窗口中所做的任何選擇

的淨效應將是你的加-on在您使用的配置文件配置爲在您的package.json中沒有"private-browsing": true權限時永遠不會記錄歷史記錄,這似乎不起作用。

如果你把這個權限在你的package.json文件,必須使用專用瀏覽模塊,require("sdk/private-browsing").isPrivate(object),以檢查專用窗口或標籤之中。如果您在這樣的窗口或標籤中,則不需要存儲任何有關此類環境的信息。