2011-11-02 70 views
-2

我正在研究一個可以通過其他擴展進行擴展的模塊化擴展。我正在尋找一種方法來讀取擴展的manifest.json或者一個自定義文件,比如widgets.json。閱讀另一個Chrome擴展程序的manifest.json

我試過this,即使允許<all_urls>,但不幸的是面臨着這樣的錯誤:

XMLHttpRequest cannot load chrome-extension://aknpkdffaafgjchaibgeefbgmgeghloj/manifest.json. Cross origin requests are only supported for HTTP.

有沒有我可以在分機之間交換數據的小型,簡單的比特任何其他方式?我目前使用chrome.extension.sendRequest,但這被證明是在background.html中的內存稅。此外,它還使託管應用無法在其應用中嵌入小部件。

我非常感謝任何幫助。

注意:我也意識到jsonp是一個選項,但我寧願不採取。惡意擴展可能很容易導致漏洞。

+0

您想從清單中讀取哪個字段? – serg

+0

自定義字段,「窗口小部件」。我正在開發的擴展包含可由任何人創建的小部件。可悲的是,我目前的方法不適用於託管應用程序(chrome.extension.sendRequest)。 –

+0

如果您想讓其他擴展程序和應用程序與您通話,可以讓您的擴展程序具有「web_accessible_resources」下列出的html頁面,接受消息並寫入localStorage。其他擴展將創建一個iframe將該頁面嵌入到其後臺頁面中,他們可以使用postMessage向其發送消息,並且該頁面將寫入消息localStorage。您的擴展後臺頁面可以從localStorage中讀取消息。 – AgentME

回答

3

Malicious extensions could easily result in a vulnerability.

這正是爲什麼Chrome不允許一個擴展程序查看他人的花園。

因此不,鉻不支持這一點。您有幾種選擇:

  1. 文件實現「擴展點」,讓不同的擴展相互交談而無需額外的外部服務器的增強請求。

  2. 在構建時共享數據:創建一個包含共享數據的骨架擴展,並使用相同的骨架構建所有「子」擴展。這意味着您必須同時部署所有擴展,並且它不允許您的擴展交換運行時數據,但它可能會有所幫助。

  3. 創建一個外部服務器,允許所有分機相互通話。可能不太現實,只是爲了完整性。

+0

我真的不能看到能夠讀取另一個擴展的manifest.json的危害。而且,擴展本身可能會對用戶訪問的網站造成的傷害遠遠超過其他擴展,這已經是可能的。我真的不喜歡這些選項中的任何一個:「[我會繼續嘗試;必須有一種方法。 –

相關問題