Quiero añadir un panel de interfaz de usuario de Chrome devtools ventana y mostrar un poco de información acerca de la página actualmente cargada.
Para obtener la información, quiero inyectar código JavaScript antes de que se carga la página, para que yo pueda cambiar el comportamiento de algunos de sus métodos.

He probado con el siguiente código:

manifiesto.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!';
  };

Sin embargo, como el comportamiento de la Matriz.toString() no cambia, el JavaScript (bogusarray.js) parece que nunca se inyecta en la carga de páginas.
¿Hay algún consejo sobre esto?

  • Quizás podría establecer un punto de interrupción en la primera línea del script, editar y continuar…
  • Creo que estoy hecho.
  • Hizo esto a resolver su problema? Si es así, me gustaría publicar esto como respuesta de futuro a los lectores a encontrar la solución rápidamente.
  • Qué significa el punto de interrupción problema? Sí, he añadido un salto de línea en la primera línea y se retira el guión a partir de los nombres de archivo de modo que todo lo trabajado. (parece imposible insertar código en una lista).
InformationsquelleAutor kuu | 2013-03-01

2 Comentarios

  1. 6

    Su secuencia de comandos inyectada bogusarray.js no script de la página – que se ejecuta es independiente del contexto de ejecución y sólo puede ver el DOM de la página. Usted podría secuencia de comandos de la página a través de la inyección de una <script> etiqueta en la catedral de su contenido de la secuencia de comandos, pero va a ser demasiado tarde para anular funciones como la Matriz de prototipo.

    Para alcanzar su meta, usted debe cargar inspeccionado página dentro de su DevTools extensión utilizando chrome.devtools.inspectedWindow.reload(). Sólo tiene que pasar el invalida el uso de injectedScript parámetro en ella.

    • Funciona y ahora puedo reemplazar la Matriz de prototipo. Sin embargo, si trato de recuperar la página de variables a través de postMessage, la página se bloquea con «Aw Complemento». Podría ser una restricción de seguridad, pero voy a publicar una pregunta por separado acerca de él. Gracias de todos modos!
    • Por favor, eche un vistazo a la cuestión relativa: stackoverflow.com/questions/15196480/…
    • Esto suena muy bien, pero ¿podría dar un ejemplo de cómo pasar un reemplazo en chrome.devtools.inspectedWindow.reload(). ? Gracias
  2. 3

    Usted puede hacer esto de esta manera:

    • establecer un punto de interrupción en la primera línea de la secuencia de comandos
    • editar el script
    • continuar la depuración

Dejar respuesta

Please enter your comment!
Please enter your name here