我正在開發具有內容腳本,背景頁面,設置頁面和彈出頁面的Google Chrome擴展程序。我瞭解到儘管內容腳本在Chrome網上應用店加載,但從未調用onMessage偵聽器。我的google-chrome擴展程序中是否有chrome。* API,以查找禁止腳本訪問的頁面?
我可以在哪裏,我執行chrome.extension.onMessage.addListener
點持續突破,但聽者則永遠不會調用。因此,當我從背景或彈出頁面執行chrome.tabs.sendMessage
時,將不會調用responseCallback
函數 - 即不會執行responseCallback
內部的邏輯。 Chrome甚至不會將此視爲錯誤情況 - 它會接受請求,但會在此後保持沉默。
如果它處理爲錯誤的情況下(如試圖消息chrome://
頁),則responseCallback
就已經調用了未定義的響應參數 - 這會導致我的錯誤處理代碼來執行..但沒有這樣的運氣。
我可以在我的代碼添加特殊行爲http(s)://chrome.google.com/webstore/*
,但希望有發現從執行被禁止的網頁更正式的方式。希望在那裏有任何指針。
我發現了一個偉大的職位here,但它不具有可編程的API,因此這個問題。
我已經意識到,Chrome網上應用店和chrome://
網址是特殊情況。但是,根據我的調查,chrome://
網址上的行爲與Chrome網上應用店中的行爲不同。在chrome://
網址,我的內容腳本出現在所有不加載和sendMessage
的responseCallback
功能被用空/未定義的響應對象調用。這是API發出錯誤信號的正式方式,對我來說工作正常。
我的問題是能夠以編程方式檢測像Chrome網上應用店所遇到的錯誤,而無需對URL進行硬編碼(URL可能隨時間而改變)。
在此先感謝您的回覆。
喜馬修,謝謝您的閱讀,理解和迴應我的問題。是的,你的方法應該起作用。我目前的代碼採用了這種技術 - 即如果頁面沒有響應,那麼內容腳本就不存在了(或者出錯了)。即使通常情況下,即使另一部分代碼失敗仍然可以繼續工作。但是,如果有一種過濾出問題頁面的編程方式(例如所有的chrome:// URL),那麼我將能夠向最終用戶提供更好的工具提示/消息,解釋爲什麼UI缺少某些功能。再次感謝。 – user1801766
你想如何更新UI?我不明白爲什麼ping頁面並不是一種「程序化的方式」來實現你想要的。 –
對不起,我應該說'API'而不是'編程方式'。我期望的是一個chrome。* API,我可以使用URl(或tab-id)作爲參數來調用,它會告訴我該頁面是否允許內容腳本運行。在這種情況下,我甚至不會發出'ping',而是在UI上顯示一條消息,說明該頁面具有受限權限。我看了看,但發現沒有合適的Chrome。* API。我猜沒有任何。 – user1801766