Fehler „Eigenschaft von Undefiniert kann nicht gelesen werden“ bei Chrome-APIs in Inhaltsskripten
Chrome-Erweiterungen verwenden häufig Inhaltsskripte, um JavaScript in Webseiten einzuschleusen . Ein häufiges Problem tritt auf, wenn versucht wird, innerhalb dieser Inhaltsskripts auf Chrome-APIs wie chrome.tabs zuzugreifen.
Der Fehler „Eigenschaft 'Name' von undefiniert kann nicht gelesen werden“ weist darauf hin, dass die API im Inhalt nicht verfügbar ist Skriptkontext. Dies liegt daran, dass Inhaltsskripte im Vergleich zu anderen Skripttypen wie Hintergrundskripten und Popup-Skripten nur begrenzten Zugriff auf Chrome-APIs haben.
Ursache:
Inhaltsskripte sind in einer Sandbox untergebracht und haben nur einen eingeschränkten Zugriff auf Chrome-APIs Zugriff auf einen bestimmten Satz von APIs, einschließlich chrome.i18n, chrome.dom, chrome.storage und einer Teilmenge davon chrome.runtime/chrome.extension.
Lösung:
Um auf eingeschränkte Chrome-APIs wie chrome.tabs in einem Inhaltsskript zuzugreifen, können Sie für die Kommunikation die Nachrichtenübermittlung verwenden ein geeigneter Skripttyp (z. B. Hintergrund). Skript).
Implementierung:
// 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); }); } });
Durch Befolgen dieser Schritte können Sie verwenden Chrome-APIs, die in Inhaltsskripten nicht verfügbar sind, indem die Anforderungen durch Nachrichtenübermittlung an privilegiertere Skripttypen delegiert werden.
Das obige ist der detaillierte Inhalt vonWie kann der Fehler „Eigenschaft von nicht definiertem Inhalt kann nicht gelesen werden' bei der Verwendung von Chrome-APIs in Inhaltsskripten behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!