內容腳本中Chrome API 出現「無法讀取未定義的屬性」錯誤
Chrome 擴充程式通常使用內容腳本將JavaScript 注入網頁。嘗試在這些內容腳本中存取 chrome API(例如 chrome.tabs)時會出現一個常見問題。
錯誤「無法讀取未定義的屬性『名稱』」表示該 API 在內容中無法使用腳本上下文。這是因為與後台腳本和彈出腳本等其他腳本類型相比,內容腳本對 Chrome API 的存取受到限制。
原因:
內容腳本是沙盒的,僅具有訪問一組特定的 API,包括 chrome.i18n、chrome.dom、chrome.storage以及chrome.runtime/chrome.extension.
解決方案:
要存取內容腳本中的 chrome.tabs 等受限制的 chrome API,您可以使用訊息傳遞來與適當的腳本類型(例如背景
實作:
// In contentScript.js chrome.runtime.sendMessage({ action: "getTabs" });
// In backgroundScript.js chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { if (request.action === "getTabs") { chrome.tabs.query({}, (tabs) => { sendResponse(tabs); }); } });
以上是在內容腳本中使用 Chrome API 時如何解決「無法讀取未定義的屬性」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!