1

我試圖檢測我的Chrome擴展是否使用在我的網站上執行的js安裝。我找到了一些例子,有些我甚至不明白,或者可以使它們工作。我嘗試和有點工作是添加元素到DOM或修改一些CSS屬性。例如:儘快將變量傳遞給Chrome擴展的網頁

在我的擴展背景的網頁我有:

function changeBG(tab){ 
    chrome.tabs.executeScript(tab.id, { 
     code: ' document.body.bgColor="red" ' 
    }); 
} 

chrome.tabs.onUpdated.addListener(changeBG); 

在我的網站我有:

<script> 
    alert(document.body.bgColor); 
</script> 

背景也變成紅色,但.bgColor爲null,因爲我嘗試只要頁面開始加載,請在網站代碼頂部閱讀它。加載頁面後,我可以讀取它,並返回「紅色」。 (如果在頁面中注入元素,然後嘗試讀取innerHTML或元素的屬性,也會發生同樣的事情)。

但我不想等待onload或任何東西,因爲我的內容取決於擴展是否安裝。

我也嘗試了從擴展內容加載圖像的方法,但是這又是一個間接的異步?方法。

我不想「交換」內容,我想知道在繼續加載我的網站上的任何其他內容之前是否安裝了擴展程序。

有人知道我該怎麼做嗎?

回答

3

據我所知,javascript檢查執行得太遲了,因爲網頁內容已經被瀏覽器處理了。如果你想知道在加載任何內容之前是否啓用了擴展,你應該在服務器端檢查它。做到這一點的方法是讓你的擴展名附加一些簽名到瀏覽器發送到服務器的標題。然後,如果簽名存在,您將知道請求發件人已安裝了您的擴展程序,並且您將能夠返回適當的內容。標題操作描述爲here。您可能需要使用這個:chrome.webRequest.onBeforeSendHeaders.addListener

+0

這是一個很好的解決方案,我會做一些研究,看看我能做到這一點,非常感謝。 – user979390

0

由於這是您自己的網站使用chrome.app.isInstalled方法用於inline installation。您必須先使用網站管理員工具驗證您的網域。

+0

如何從www.myWebsite.com/somePage.php運行「chrome.app.isInstalled」?我不需要等待DOM或文檔被首先加載嗎?編輯:擴展如果爲內部使用,我不認爲我可以得到該網站驗證,再加上它似乎需要我的擴展需要在Chrome網上應用店使用這個。 – user979390

+0

是的。該擴展程序需要位於Chrome網上應用店中。 – abraham

相關問題