2017-08-02 64 views
0

我實際上是在網站上添加一個按鈕來安裝網絡擴展,我想回電告訴我它是否成功。不需要Firefox的擴展安裝回調

我就翻過documentation顯示這樣做此代碼:

function xpinstallCallback(url, status) 
{ 
if (status == 0) 
    msg = "XPInstall Test: PASSED\n"; 
else 
    msg = "XPInstall Test: FAILED\n"; 
    dump(msg); 
    alert(msg); 
} 
xpi={'XPInstall Pre-Checkin Test':'pre_checkin.xpi'}; 
InstallTrigger.install(xpi,xpinstallCallback); 

所以我建立這個模型和一些信息,我周圍聚集的淨這裏我的代碼是我的代碼:

$("#install-firefox").on('click', '.install-firefox-extension', function() { 
    var params = { 
     "Extension": { URL: "https://addons.mozilla.org/firefox/downloads/latest/example/example.xpi", 
      IconURL: 'https://addons.cdn.mozilla.net/user-media/addon_icons/example/example.png', 
      Hash: "sha256:30097adeeadcf2683e9a4aexampleaa82403aafb7faa6db9f44db657a786a4", 
      toString: "https://addons.mozilla.org/firefox/downloads/latest/example/example.xpi" 
     } 
    }; 
    InstallTrigger.install(params, function(url, status) { 
     if (status == 0) 
      console.log("Extension successfully installed"); 
     else 
      console.log("Extension failed"); 
    }); 
}); 

安裝工作,我這裏的問題是沒有進入回調函數。

回答

1

MDN documentation for InstallTrigger.install()狀態:

在Firefox 3中的回調不再調用,除非執行安裝的網站列入白名單。

給出措辭,這意味着在Firefox版本> = 3時,除非啓動安裝的網站列入白名單,否則永遠不會調用回調函數。您的網站被列入白名單的可能性極小,因此不會調用回調函數。除了要求Mozilla將您的網站列入白名單(我認爲這不太可能是),您無法通過調用InstallTrigger.install()來獲得回調。

另一種方法是,假設您控制了擴展的代碼,則擴展是通知網站它已安裝。如何做到這一點取決於你正在安裝的擴展類型。據推測,這將是一個WebExtension。如果是這樣,有幾種方法:window.postMessage()CustomEvent,或者讓擴展執行一個已經存在的函數/在頁面上下文中設置一個變量。