2016-05-04 7 views
0

Ich versuche, eine JavaScript-Funktion, die auf der Seite des Browsers in meinem Chrome-Erweiterung Inhaltsskript vorhanden ist. Ist das möglich?Chrome-Erweiterung: Rufen Sie eine JavaScript-Funktion auf der Seite, aus dem Inhaltsskript

Zum Beispiel ist die Funktion "findCustomer()" auf der Seite verfügbar. Derzeit, wenn ich findCustomer ("XXXXXXX") in der Browser-Konsole ausführen, wird der Name des Kunden erfolgreich zurückgegeben. Wie kann ich dieses Skript über das Inhaltsskript ausführen?

Ich habe Code wie folgt aus dem Content-Skript:

var customerId = "1234567"; 
alert(customerId); // This will display the customer ID on an alert 
var customerName = findCustomer(customerId); // This is a javascript function on the page 

Ich hoffe, das ist klar genug.

Antwort

0

Inhaltsskripte werden in einer speziellen Umgebung ausgeführt, die als isolierte Welt bezeichnet wird. Sie haben Zugriff auf das DOM der Seite, in die sie eingefügt werden, aber nicht auf JavaScript-Variablen oder Funktionen, die von der Seite erstellt werden. https://developer.chrome.com/extensions/content_scripts#execution-environment

Was brauchen Sie einen <script> Block in der Seite zu tun zu injizieren, wie:

var injectedCode = '(' + function() { 
    var customerId = "1234567"; 
    alert(customerId); 
    var customerName = findCustomer(customerId); 

} + ')();'; 

var script = document.createElement('script'); 
script.textContent = injectedCode; 
(document.head || document.documentElement).appendChild(script); 
script.parentNode.removeChild(script); 

Hinweis: Der <script> Block danach entfernt wird, da der Code bereits von diesem Punkt ausgeführt wurde, und wird nicht mehr benötigt.

+0

Wow danke, es hat sehr gut funktioniert! –

Verwandte Themen