首頁 > web前端 > js教程 > 在內容腳本中使用 Chrome API 時如何解決「無法讀取未定義的屬性」錯誤?

在內容腳本中使用 Chrome API 時如何解決「無法讀取未定義的屬性」錯誤?

Susan Sarandon
發布: 2024-12-21 05:37:10
原創
154 人瀏覽過

How to Solve

內容腳本中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,您可以使用訊息傳遞來與適當的腳本類型(例如背景

實作:

  1. 將訊息從內容腳本傳遞到後台腳本、彈出腳本或Service Worker(用於MV3)。 🎜>
// 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);
    });
  }
});
登入後複製
    在適當的腳本中使用 API並將結果傳回內容腳本。 🎜>

以上是在內容腳本中使用 Chrome API 時如何解決「無法讀取未定義的屬性」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板