1

Nehmen wir an, ich möchte den Inhalt der ausgewählten Registerkarte in Chrome-Erweiterung ändern. Ich möchte jedes Auftreten von come durch eine fly ersetzen.Tauschen Sie einige Wörter im Inhalt der ausgewählten Registerkarte in Chrom

Wie kann ich die Wörter dynamisch ändern?

Bis jetzt erreiche ich die document und replace alles Vorkommen des Wortes come aber konnte den aktualisierten Inhalt nicht in die ausgewählte Registerkarte schreiben.

Was ich schrieb, ist;

chrome.tabs.getSelected(null,function(tab) { 
    updatedContent = document.replace(/come, 'fly'); 

}); 

Wie kann ich das erreichen?

Edit: Mein Fehler, document.replace funktioniert nicht gut.

Edit2: Mit dem Vorschlag von @Haibara Ai ich bearbeitet als;

chrome.tabs.query({active: true, currentWindow: true} ,function (tabs) { 
    chrome.tabs.executeScript(tabs[0].id, { code: 'document.body.outerHTML.replace(/come/g, "fly")' }); 
}); 

Aber nichts ist passiert. Es gibt auch keinen Fehler.

Antwort

0

chrome.tabs.getSelected wird im Kontext der Erweiterung aufgerufen, während das Dom, auf das Sie zugreifen möchten, im Prozess der Webseite lebt, Sie können es nicht direkt von der Hintergrundseite aus bearbeiten.

Um das zu erreichen, was Sie wollen, können Sie einen Blick auf chrome.tabs.executeScript nehmen könnte, die Sie mit der Programmierung Injektion, Beispielcode sieht aus wie zu tun erlaubt: bewusst sein, arbeiten document.replace nicht gut

chrome.tabs.query({active: true, currentWindow: true}, 
    (tabs) => chrome.tabs.executeScript(tabs[0].id, {code: 'document.replace(/come, "fly");'})); 

Bitte, könnten Sie Verwenden Sie stattdessen andere Methoden wie document.body.innerHTML.replace.

BTW, chrome.tabs.getSelected wurde veraltet, verwenden Sie stattdessen chrome.tabs.query{active: true}.

+0

vielen Dank, aber wenn ich versuche, Ihren Code innerhalb 'window.onload = function() {}' es hat nicht funktioniert. Und gab mir diesen Fehler 'Uncaught SyntaxError: Unexpected identifier' bei Zeile' (Tabs) => chrome.tabs.executeScript (Tabs [0] .id, {code: 'document.replace (/ come,' fly ');' }); ' – user6468132

+0

@ user6468132, das ist nur ein Beispielcode, müssten Sie Ihre eigene' replace' Methode verwenden, und vergessen Sie nicht, mit Zitat und Berechtigungen Problem umzugehen. –

+0

Wenn ich das selbe in der Konsole ausführe, die 'document.body.outerHTML.replace (/ come/g," fly ")' ist, wird das outerHTML geändert, aber nichts ändert sich auf der Seite. Sie sollte hinzugefügt werden, damit diese Änderungen angezeigt werden auf der Seite? – user6468132

Verwandte Themen