我們希望通過我們合作伙伴網站的內嵌安裝來發布我們的Chrome擴展程序。而且我們希望從擴展程序內部知道它是從哪個網站安裝的。 有沒有一種方法可以在安裝過程中插入參數並在擴展中接收它? 在此先感謝。有沒有辦法將參數傳遞給Chrome擴展?
0
A
回答
1
在Chrome內聯安裝API中沒有直接的方法來完成它,但是有一種方法可以將它連接起來,這需要一點點修改。
從本質上講,你需要兩件事情:
- 知道,當一個瀏覽器擴展程序安裝已 成功完成您的分機上的合作伙伴網站的能力。
- 一個機制,從合作伙伴的網站,發送消息到您的chrome 擴展名。
第一個很容易,也是chrome安裝API的一部分,只需使用successCallback函數安裝API,如here所列。
既然您已經知道發生了安裝的時間點,那麼將URL放到您的擴展中就會有些複雜。最簡單的方法是將事件數據中的URL發送到一個自定義JavaScript事件到節點(文檔可以正常工作),然後在擴展中,您可以在文檔上偵聽此自定義事件類型。然後在事件處理程序中,您將擁有該URL。
但這是很容易的部分。棘手的部分是你的內容腳本不會在你剛安裝的標籤上。如果您的擴展程序中有內容腳本隨每次頁面加載而加載,則只會在安裝之後加載每個頁面加載。那麼你從那裏安裝的頁面?在刷新它之前,您將無法獲得該頁面的擴展。
我可以爲此考慮一些解決方案,而且它們都不是很好。首先,如果在你的合作網站上,他們不介意你使用URL搞砸,你可以添加一個散列(假設沒有散列),並帶有一個標誌,表示你的擴展剛安裝好。然後,您可以使用Chrome擴展標籤API來查找當前活動窗口中當前活動選項卡的URL。閱讀你的擴展的負載,如果它有一個說「#extensionInstallId =」,那麼你可以認爲這個擴展只是從該URL安裝並記錄下來。這並非萬無一失,因爲如果用戶離開該選項卡時,當他們重新打開瀏覽器時,您將得到誤報,並在只有一個安裝事件時收到2個安裝事件。我想你甚至可以在localStorage中爲擴展存儲一個標誌,並檢查它是否真的是第一次安裝。
其次是做類似this的事情。這很麻煩,因爲它會創建一個新的彈出窗口(僅用於將此事件發送到您的擴展)。
相關問題
- 1. 有沒有辦法將參數傳遞給pkg
- 2. 有沒有辦法將參數傳遞給is運算符?
- 3. 有沒有辦法將參數傳遞給ant任務命令?
- 4. 有沒有辦法將參數傳遞給NATURAL子例程?
- 5. 有沒有辦法將ServletRequest參數傳遞給JavaScript?
- 6. 有沒有辦法將參數傳遞給setter
- 7. 有沒有辦法將請求參數傳遞給/ health端點?
- 8. 有沒有辦法將參數傳遞給m.me/username URL?
- 9. WinJS:有沒有辦法將參數傳遞給x-ms-webview?
- 10. 有沒有辦法將命令行參數傳遞給spec/rspec?
- 11. 有什麼辦法可以將Context傳遞給HtmlHelper擴展嗎?
- 12. 有沒有辦法使用擴展程序從Google Chrome傳遞信息?
- 13. 有沒有辦法將方法作爲參數傳遞給方法?
- 14. 將變量傳遞給chrome.tabs.onUpdated.addListener() - Chrome擴展
- 15. 如何通過Selenium Script c#將參數傳遞給Chrome擴展?
- 16. Javascript:將構造函數參數傳遞給原型鏈。有沒有辦法?
- 17. 有沒有辦法將函數作爲參數傳遞給程序集?
- 18. 有沒有辦法將一行作爲參數傳遞給MySQL函數?
- 19. 有沒有辦法將一個變量傳遞給keypressed函數?
- 20. 有沒有辦法將查詢傳遞給PHP函數
- 21. 有沒有辦法將任務ID傳遞給調用函數?
- 22. 有沒有辦法將一個數組傳遞給rs.exe
- 23. 有沒有辦法將多個函數傳遞給AngularJS指令?
- 24. 有沒有辦法將數組傳遞給currentEhen在EmberJS中?
- 25. 有沒有辦法將void作爲參數傳遞?
- 26. Chrome擴展:問題與傳遞參數
- 27. OpenCover沒有將參數傳遞給NUnit
- 28. 有沒有辦法將限制參數傳遞給Spark中的functions.collect_set?
- 29. 有沒有辦法將一個參數傳遞給express nodejs中的路由器?
- 30. 有沒有辦法使用wrk將參數傳遞給GET請求?
另一種方式可能是使用歷史api來查找最近訪問的合作伙伴網址。 –