Ich muss einfach auf ein Objekt zugreifen, das eine Variable auf der Seite ist, auf der ich mein Inhaltsskript über meine Chrome-Erweiterung ausführe.Zugriff auf ein Seitenobjekt mit einer Chrome-Erweiterung
Ich weiß über die Umgebungen und ihre isolierten Welten, in denen die Inhaltsskripte und injizierten Skripts ausgeführt werden, und dass es möglich ist, einige Variablen mithilfe der injizierten Skripts zu erhalten und sie dann zurück zu senden.
Ich habe nach anderen Antworten zu dieser Frage gesucht und die meisten arbeiten für andere Arten von Variablen und sind die grundlegende Art, dies zu tun, aber keine derzeit für den Zugriff auf Objekte arbeiten.
Alle aktuellen Lösungen oder Workarounds?
EDIT: Die Lösung, die ich verwendet:
Inhalt Skript:
//Sends an object from the page to the background page as a string
window.addEventListener("message", function(message) {
if (message.data.from == "myCS") {
chrome.runtime.sendMessage({
siteObject: message.data.prop
});
}
});
var myScript = document.createElement("script");
myScript.innerHTML = 'window.postMessage({from: "myCS", prop: JSON.stringify(OBJECT)},"*");';
document.body.appendChild(myScript);
Background.js:
//Info receiver
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
//When the content script sends the sites object to extract the needed data
if (message.siteObject !== undefined) {
console.log(message.siteObject);
//Process the data
}
});
Ich hatte auch diesen Ansatz versucht: Zum Beispiel Angenommen, das Objekt, das Sie auf Ihrer Seite zugreifen möchten,
pageObject
genannt und es hat nicht funktioniert, trotzdem kopierte ich diesen genauen Code und ersetzte nur mein Objekt, und ich habe immer noch das gleiche Problem, "Uncaught ReferenceError: myObject.property ist nicht definiert". –Ich habe gerade den Code von 'content2.js' bearbeitet. Versuchen Sie auf diese Weise, pageObject.existingProperty durch das tatsächliche Objekt und die Eigenschaft zu ersetzen, die Sie suchen. –
'Uncaught TypeError: Fehler beim Ausführen von 'postMessage' auf 'Window': 2 Argumente erforderlich, aber nur 1 vorhanden. ' –