2016-03-28 274 views
0

我們希望通過我們合作伙伴網站的內嵌安裝來發布我們的Chrome擴展程序。而且我們希望從擴展程序內部知道它是從哪個網站安裝的。 有沒有一種方法可以在安裝過程中插入參數並在擴展中接收它? 在此先感謝。有沒有辦法將參數傳遞給Chrome擴展?

回答

1

在Chrome內聯安裝API中沒有直接的方法來完成它,但是有一種方法可以將它連接起來,這需要一點點修改。

從本質上講,你需要兩件事情:

  1. 知道,當一個瀏覽器擴展程序安裝已 成功完成您的分機上的合作伙伴網站的能力。
  2. 一個機制,從合作伙伴的網站,發送消息到您的chrome 擴展名。

第一個很容易,也是chrome安裝API的一部分,只需使用successCallback函數安裝API,如here所列。

既然您已經知道發生了安裝的時間點,那麼將URL放到您的擴展中就會有些複雜。最簡單的方法是將事件數據中的URL發送到一個自定義JavaScript事件到節點(文檔可以正常工作),然後在擴展中,您可以在文檔上偵聽此自定義事件類型。然後在事件處理程序中,您將擁有該URL。

但這是很容易的部分。棘手的部分是你的內容腳本不會在你剛安裝的標籤上。如果您的擴展程序中有內容腳本隨每次頁面加載而加載,則只會在安裝之後加載每個頁面加載。那麼你從那裏安裝的頁面?在刷新它之前,您將無法獲得該頁面的擴展。

我可以爲此考慮一些解決方案,而且它們都不是很好。首先,如果在你的合作網站上,他們不介意你使用URL搞砸,你可以添加一個散列(假設沒有散列),並帶有一個標誌,表示你的擴展剛安裝好。然後,您可以使用Chrome擴展標籤API來查找當前活動窗口中當前活動選項卡的URL。閱讀你的擴展的負載,如果它有一個說「#extensionInstallId =」,那麼你可以認爲這個擴展只是從該URL安裝並記錄下來。這並非萬無一失,因爲如果用戶離開該選項卡時,當他們重新打開瀏覽器時,您將得到誤報,並在只有一個安裝事件時收到2個安裝事件。我想你甚至可以在localStorage中爲擴展存儲一個標誌,並檢查它是否真的是第一次安裝。

其次是做類似this的事情。這很麻煩,因爲它會創建一個新的彈出窗口(僅用於將此事件發送到您的擴展)。

+0

另一種方式可能是使用歷史api來查找最近訪問的合作伙伴網址。 –

相關問題