Heim >Web-Frontend >js-Tutorial >Wie greife ich über Inhaltsskripts in Chrome-Erweiterungen auf globale Variablen zu?
Zugriff auf globale Variablen aus Inhaltsskripten in Chrome-Erweiterungen
Trotz Versuchen, die GLOBALS-Variable aus der aktuellen Gmail-Nachricht über jQuery.load abzurufen( ) in einem Inhaltsskript bleiben Fehler aufgrund der Isolation bestehen.
Lösung: Skriptinjektion und Ereignis-Listener
Um auf globale Eigenschaften des Seitenfensters zuzugreifen, sollten Sie Folgendes verwenden:
var s = document.createElement('script'); s.src = chrome.extension.getURL('script.js'); (document.head||document.documentElement).appendChild(s);
Sobald das Skript geladen ist, entfernen Sie es aus Gründen der Sauberkeit:
s.onload = function() { s.remove(); };
document.addEventListener('RW759_connectExtension', function(e) { // e.detail contains transferred data, e.g., GLOBALS });
Beispielcode:
contentscript.js (Am Dokumentende ausführen):
// Inject script var s = document.createElement('script'); s.src = chrome.extension.getURL('script.js'); (document.head||document.documentElement).appendChild(s); // Event listener document.addEventListener('RW759_connectExtension', function(e) { alert(e.detail); // Access GLOBALS });
script.js ("run_at": "document_end" im Manifest):
setTimeout(function() { document.dispatchEvent(new CustomEvent('RW759_connectExtension', { detail: GLOBALS // Send data })); }, 0);
Denken Sie daran, „script.js“ zum Abschnitt „web_accessible_resources“ in der Manifestdatei hinzuzufügen.
Best Practice:
Injizierte Logik minimieren Skripte und übernehmen die meiste Verarbeitung im Inhaltsskript, um die Zuverlässigkeit der Erweiterung und den Zugriff auf zusätzliche Funktionen wie Chrome.*-APIs sicherzustellen.
Das obige ist der detaillierte Inhalt vonWie greife ich über Inhaltsskripts in Chrome-Erweiterungen auf globale Variablen zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!