Heim >Web-Frontend >js-Tutorial >Warum kann mein Inhaltsskript nicht auf chrome.tabs zugreifen und wie behebe ich den Fehler „Undefinierte Referenz'?

Warum kann mein Inhaltsskript nicht auf chrome.tabs zugreifen und wie behebe ich den Fehler „Undefinierte Referenz'?

Barbara Streisand
Barbara StreisandOriginal
2024-12-09 22:49:10214Durchsuche

Why Can't My Content Script Access chrome.tabs and How Do I Fix the

Inhaltsskripte und Chrome-APIs: Undefinierter Referenzfehler

Beim Arbeiten mit Inhaltsskripten in Chrome-Erweiterungen kann die Fehlermeldung „Lesen nicht möglich“ auftreten Eigenschaft von undefiniert“ beim Versuch, auf Chrome-APIs wie chrome.tabs zuzugreifen. Dieses Problem tritt trotz Erteilung der erforderlichen Berechtigungen im Manifest auf.

Informationen zur Verfügbarkeit der Chrome-API

Inhaltsskripte haben aus Sicherheitsgründen nur eingeschränkten Zugriff auf Chrome-APIs. Innerhalb von Inhaltsskripten kann nur auf eine ausgewählte Gruppe von APIs zugegriffen werden:

  • chrome.i18n
  • chrome.dom
  • chrome.storage
  • Eine Teilmenge von chrome.runtime/chrome.extension

APIs wie chrome.tabs, die Browser-Registerkarten manipulieren, sind nur im Hintergrundskript (oder Service Worker in Manifest V3), Popup-Skripten und anderen Erweiterungskontexten verfügbar.

Lösung: Message Passing

Um auf Chrome-APIs zuzugreifen, die in Inhaltsskripten nicht verfügbar sind, müssen Sie Nachrichten vom Inhaltsskript an das Hintergrundskript übergeben. Das Hintergrundskript kann dann die API-Operation ausführen und die Ergebnisse an das Inhaltsskript zurücksenden.

Hier ist ein Codeausschnitt, der diesen Ansatz demonstriert:

// content script:

chrome.runtime.sendMessage({ type: "getTabs" }, function(response) {
  console.log(response.tabs);
});

// background script:

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
  if (request.type == "getTabs") {
    chrome.tabs.query({}, function(tabs) {
      sendResponse({ tabs: tabs });
    });
  }
});

Wenn Sie diesem Ansatz folgen, können Sie dies effektiv tun Greifen Sie auf Chrome-APIs zu, die in Inhaltsskripten nicht verfügbar sind, und wahren Sie dabei Sicherheit und Kapselung.

Das obige ist der detaillierte Inhalt vonWarum kann mein Inhaltsskript nicht auf chrome.tabs zugreifen und wie behebe ich den Fehler „Undefinierte Referenz'?. 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