Heim >Web-Frontend >js-Tutorial >Warum erhalte ich die Meldung „Eigenschaft von undefiniert kann nicht gelesen werden', wenn ich über ein Inhaltsskript auf Chrome-APIs zugreife?
Zugriff auf Chrome-APIs über Inhaltsskripte: Behebung des Fehlers „Eigenschaft von undefiniert kann nicht gelesen werden“
Beim Zugriff auf Chrome-APIs wie chrome.tabs von Wenn Entwickler ein Inhaltsskript verwenden, kann es sein, dass der Fehler „Eigenschaft von undefiniert kann nicht gelesen werden“ auftritt. Dieser Fehler tritt auf, weil Inhaltsskripte nur eingeschränkten Zugriff auf Chrome-APIs haben.
Der Abschnitt „Berechtigungen“ in der Manifestdatei, wie in der Frage angegeben, enthält die Tabs-Berechtigung. Diese Berechtigung gewährt jedoch nur Zugriff auf die Tabs-API in Hintergrundskripten, Popup-Skripten oder Servicemitarbeitern.
Fehlerursache
Inhaltsskripte werden in das Web eingefügt Seiten und verfügen über einen eingeschränkten Satz an APIs, die sie verwenden können. Zu diesen APIs gehören: chrome.i18n, chrome.dom, chrome.storage und eine Teilmenge von chrome.runtime und chrome.extension. APIs wie chrome.tabs, die Browser-Registerkarten und -Fenster manipulieren, sind in Inhaltsskripten nicht verfügbar.
Lösung
Um diesen Fehler zu beheben, besteht die Lösung darin, a zu übergeben Nachricht vom Inhaltsskript an das Hintergrundskript. Das Hintergrundskript kann dann die chrome.tabs-API verwenden und auf die Nachricht vom Inhaltsskript reagieren.
Hier ist eine Beispielimplementierung:
Inhaltsskript:
chrome.runtime.sendMessage({ action: "getTabsInfo" }, (response) => { // Process the response from the background script });
Hintergrundskript:
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { if (request.action === "getTabsInfo") { chrome.tabs.query({}, (tabs) => { sendResponse({ tabs }); }); return true; } });
Indem Sie dies verwenden Mit diesem Ansatz können Inhaltsskripte auf Chrome-APIs zugreifen, indem sie Nachrichten an Hintergrundskripte senden.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich die Meldung „Eigenschaft von undefiniert kann nicht gelesen werden', wenn ich über ein Inhaltsskript auf Chrome-APIs zugreife?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!