Ist es möglich, das einschleusen von JavaScript-Code in die aktuell geladene Seite aus dem Chrome-Developer-Tools-Fenster?
Möchte ich hinzufügen, dass ein panel-Benutzeroberfläche mit den Chrome devtools Fenster und zeigt einige Informationen über die aktuell geladene Seite.
Um die Informationen, ich will Spritzen einige JavaScript-code, bevor die Seite geladen wird, so dass ich ändern kann, das Verhalten von Methoden.
Getestet habe ich mit folgenden code:
manifestieren.json
{
"name": "Test Dev Panel",
"version": "0.1",
"description": "Extends the Developer Tools, replacing Array.toString() with a bogus one.",
"devtools_page": "devtools.html",
"manifest_version": 2,
"permissions": ["<all_urls>"],
"content_scripts": [{
"matches": ["http://*/*"],
"js": ["bogusarray.js"],
"run_at": "document_start"
}]
}
devtools.js
chrome.devtools.panels.create("Text Dev Panel",
"img/iconDev.png",
"panel.html");
bogusarray.js
Array.prototype.toString = function () {
return 'Injected!';
};
Jedoch, wie das Verhalten von Arrays.toString() nicht ändern, wird das JavaScript (bogusarray.js) scheint nie injiziert die geladenen Seiten.
Gibt es einen Rat dazu?
Sie könnte einen Haltepunkt in die erste Zeile des Skripts, zu Bearbeiten und weiter...
Ich denke, dass ich fertig bin.
Hat dies Ihr problem lösen? Wenn dem so ist, möchte ich in diesem post als Antwort, damit künftige Leser finden die Lösung schnell.
Meinst du den breakpoint-problem? Ja, ich habe ein Zeilenumbruch in der ersten Zeile und entfernt den Bindestrich aus dem Dateinamen, so dass alles funktionierte. (es scheint unmöglich, zum einfügen von code in eine Liste.)
Ich denke, dass ich fertig bin.
Hat dies Ihr problem lösen? Wenn dem so ist, möchte ich in diesem post als Antwort, damit künftige Leser finden die Lösung schnell.
Meinst du den breakpoint-problem? Ja, ich habe ein Zeilenumbruch in der ersten Zeile und entfernt den Bindestrich aus dem Dateinamen, so dass alles funktionierte. (es scheint unmöglich, zum einfügen von code in eine Liste.)
InformationsquelleAutor kuu | 2013-03-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre injizierte Skript bogusarray.js nicht-Skript die Seite - es läuft in einem separaten Kontext für die Ausführung und kann nur sehen, das DOM der Seite. Man könnte das script die Seite über Injektion eines
<script>
Tags in DOM, von Ihrem Inhalt Skript, aber es wird immer noch zu spät override-Funktionen wie Array-Prototyp.Ihr Ziel zu erreichen, sollte man neu laden inspiziert Seite in Ihre DevTools Erweiterung mit
chrome.devtools.inspectedWindow.reload()
. Geben Sie einfach Ihre überschreibt mitinjectedScript
parameter in.Würden Sie bitte einen Blick auf die Verwandte Frage: stackoverflow.com/questions/15196480/...
Das klingt toll, aber könnten Sie ein Beispiel geben, wie die übergabe eines override in Chrom.devtools.inspectedWindow.reload(). ? Dank
InformationsquelleAutor pavel.feldman
Kannst du es so machen:
InformationsquelleAutor Uooo