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?

Warum erhalte ich die Meldung „Eigenschaft von undefiniert kann nicht gelesen werden', wenn ich über ein Inhaltsskript auf Chrome-APIs zugreife?

DDD
Freigeben: 2024-12-03 02:56:09
Original
343 Leute haben es durchsucht

Why Do I Get

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
});
Nach dem Login kopieren

Hintergrundskript:

chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
    if (request.action === "getTabsInfo") {
        chrome.tabs.query({}, (tabs) => {
            sendResponse({ tabs });
        });
        return true;
    }
});
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage