Heim >Web-Frontend >js-Tutorial >Wie kann der Fehler „Eigenschaft von nicht definiertem Inhalt kann nicht gelesen werden' bei der Verwendung von Chrome-APIs in Inhaltsskripten behoben werden?

Wie kann der Fehler „Eigenschaft von nicht definiertem Inhalt kann nicht gelesen werden' bei der Verwendung von Chrome-APIs in Inhaltsskripten behoben werden?

Susan Sarandon
Susan SarandonOriginal
2024-12-21 05:37:10199Durchsuche

How to Solve

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:

  1. Übergeben Sie eine Nachricht vom Inhaltsskript an ein Hintergrundskript, Popup-Skript oder einen Servicemitarbeiter (für MV3).
// In contentScript.js
chrome.runtime.sendMessage({ action: "getTabs" });
  1. Verarbeiten Sie die Nachricht beim Empfänger Skript.
// In backgroundScript.js
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
  if (request.action === "getTabs") {
    chrome.tabs.query({}, (tabs) => {
      sendResponse(tabs);
    });
  }
});
  1. Verwenden Sie die API im entsprechenden Skript und geben Sie das Ergebnis an das Inhaltsskript zurück.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn