簡體   English   中英

Firefox加載項可與“ jpm run”一起使用,但不能與“ jpm xpi”生成的.xpi文件一起使用

[英]Firefox add-on works with “jpm run”, but not whith .xpi file generated with “jpm xpi”

我正在使用Firefox插件SDK開發Firefox插件。 我遵循了入門教程

Firefox版本:41.0.2
我的過程是:

  1. jpm run >確定附加組件工作正常
  2. jpm xpi xpi- >確定:創建@ myAddon.xpi (JPM [info]已在...成功創建.xpi
  3. 使用@ myAddon.xpi- > NOK
    當我嘗試在Firefox中安裝插件(插件->從文件安裝-> @ myAddon.xpi )時,出現消息“安裝成功”。 看起來不錯。 但是,該附加組件不起作用。 什么都沒發生。

因此,為什么使用jpm run的測試jpm run正常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的隱私級別,該插件是否可以工作。 (選項->隱私->歷史記錄“記住歷史記錄”或“永遠不要記住歷史記錄”)-記住歷史記錄--> addOn確定-“永遠不要記住歷史記錄”-> addOn NOK任何想法

如您所確定,如果您希望Firefox附加SDK附加組件在“ 私有瀏覽”模式下工作,則需要在package.json文件中添加值為true private-browsing密鑰。

如果您沒有使用其他權限 ,則可以在package.json文件中添加以下內容:

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

Firefox文檔中有關為私人瀏覽模式編寫SDK附加組件的文檔特別指出,當以下任一情況出現時, require("sdk/private-browsing").isPrivate()方法將返回true(強調我的意思):

  • 私人窗戶,或
  • 屬於私有窗口的標簽,或者
  • 與私有窗口中托管的文檔相關聯的工作人員
  • 如果已將瀏覽器配置為從不記住歷史記錄,則為任何窗口,選項卡或工作程序(選項->隱私->歷史記錄)

如果您沒有"private-browsing": true ,則如文檔所述 ,將是以下情況(強調我的意思):

  • Windows模塊不會列出任何專用瀏覽器窗口,不會為專用瀏覽器窗口生成任何事件,也不會讓加載項打開任何專用瀏覽器窗口
  • 選項卡模塊不會列出屬於私有瀏覽器窗口的任何選項卡,並且加載項不會收到此類選項卡的任何事件
  • 任何ui組件都不會在專用瀏覽器窗口中顯示
  • 使用上下文菜單創建的任何菜單或菜單項都不會顯示在屬於專用瀏覽器窗口的上下文菜單中
  • page-mod模塊不會將內容腳本附加到屬於私有瀏覽器窗口的文檔
  • 如果活動窗口是專用瀏覽器窗口,則不會顯示任何面板對象
  • 選擇模塊將不包括在私有瀏覽器窗口中進行的任何選擇

最終的結果是,當您正在使用的配置文件配置為在package.json中沒有"private-browsing": true權限的情況下永遠無法記住歷史記錄時,您的加載項將無法正常工作。

如果確實將該權限放入package.json文件,則必須使用私有瀏覽模塊require("sdk/private-browsing").isPrivate(object)來檢查是否位於私有窗口或選項卡中。 如果您在這樣的窗口或選項卡中,則無需存儲有關此類環境的任何信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM