Est-il possible d'injecter du code JavaScript dans le chargement de la page à partir du Chrome Developer Tools fenêtre?
Je veux ajouter un panneau à l'INTERFACE utilisateur de Chrome devtools fenêtre et afficher des informations sur le chargement de la page.
Pour obtenir de l'information, je veux injecter du code JavaScript avant le chargement de la page, afin que je puisse modifier le comportement de certaines méthodes.
J'ai testé avec le code suivant:
manifeste.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!';
};
Cependant, que le comportement de la Matrice.toString() ne change pas, le JavaScript (bogusarray.js semble jamais injecté dans le chargement des pages.
Est-il un avis sur cette?
Vous pourriez peut définir un point d'arrêt dans la première ligne du script, modifier et continuer...
Je pense que je suis fait.
A cet résoudre votre problème? Si oui, je tiens à poster ce que répondez donc les futurs lecteurs de trouver rapidement la solution.
Entendez-vous le point d'arrêt problème? Oui, j'ai ajouté une ligne de rupture dans la première ligne et retiré le trait d'union les noms de fichier, donc tout a fonctionné. (il semble impossible d'insérer du code dans une liste.)
Je pense que je suis fait.
A cet résoudre votre problème? Si oui, je tiens à poster ce que répondez donc les futurs lecteurs de trouver rapidement la solution.
Entendez-vous le point d'arrêt problème? Oui, j'ai ajouté une ligne de rupture dans la première ligne et retiré le trait d'union les noms de fichier, donc tout a fonctionné. (il semble impossible d'insérer du code dans une liste.)
OriginalL'auteur kuu | 2013-03-01
Vous devez vous connecter pour publier un commentaire.
Votre script injecté bogusarray.js ne pas le script de la page - il est séparé du contexte d'exécution et ne peut voir la page du DOM. Vous pourriez script de la page via l'injection d'un
<script>
balise dans le DOM à partir de votre contenu script, mais il sera toujours trop tard pour remplacer des fonctions comme la Matrice de prototype.Pour atteindre votre objectif, vous devez recharger inspecté page dans votre DevTools extension à l'aide de
le chrome.devtools.inspectedWindow.reload()
. Il suffit de passer vos remplacements à l'aide deinjectedScript
paramètre.Veuillez s'il vous plaît prendre un coup d'oeil à la question connexe: stackoverflow.com/questions/15196480/...
Cela sonne bien, mais pourriez-vous donner un exemple, comment passer d'une substitution en chrome.devtools.inspectedWindow.reload(). ? Merci
OriginalL'auteur pavel.feldman
Vous pouvez le faire comme ceci:
OriginalL'auteur Uooo