Preguntas Generales

Hola! Yo estoy profundizando en el mundo de las Extensiones de Chrome y estoy teniendo algunos problemas para obtener el flujo de trabajo general hacia abajo. Parece ser que Google ha cambiado recientemente a abogando fuertemente Páginas de Eventos en lugar de mantener todo en background.js y background.html. Puedo tomar parte de esto significa que debemos pasar la mayoría de su extensión lógica de un contenido de la secuencia de comandos.

En Evento de Google de la Página de la cartilla, tienen el contenido de la secuencia de comandos enumerados en el manifiesto.archivo json. Pero en su caso ejemplo de la página de extensión, se pone a través de este bloque de código en el background.js: chrome.tabs.executeScript(tab.id, {file: "content.js"}, function() { });

¿Cuáles son las ventajas de hacerlo de una forma sobre la otra?

Mi Código

Voy adelante con el programática forma de inyectar el contenido de la secuencia de comandos, como Google por ejemplo.

manifiesto.json

{
    "manifest_version": 2,
    "name": "Test",
    "description": "Let's get this sucker working",
    "version": "0.0.0.1",
    "permissions": [
        "tabs",
        "*://*/*"
    ],
    "background": {
        "scripts": ["background.js"],
        "persistent": false
    },
    "browser_action": {
        "default_icon": "icon.png"
    }
}

background.js

chrome.browserAction.onClicked.addListener(function() {
    console.log("alert from background.js");
    chrome.tabs.executeScript({file: "jquery-2.0.2.min.js"}, function() {
        console.log("jquery Loaded");
    });
    chrome.tabs.executeScript({file: "content.js"}, function() {
        console.log("content loaded");
    });
});

content.js

console.log('you\'r in the world of content.js');
var ans = {};

ans.createSidebar = function() {

    return {
        init: function(){
            alert("why hello there");
        }
    }
}();

ans.createSidebar.init();

Soy capaz de conseguir los primeros 3 console.log declaraciones a mostrar en la página de fondo del depurador. Yo también soy capaz de obtener la alerta de content.js para mostrar en cualquier página web. Pero yo no soy capaz de ver la console.log de content.js ni soy capaz de ver cualquiera de las JS de content.js. He intentado buscar en el «contenido» secuencias de comandos de la sección de la página de fondo del depurador ficha Fuentes. Un par de otros puestos en MODO han sugerido la adición de debugger; declaraciones a llegar a mostrar, pero no estoy teniendo suerte con algo. La solución más cercano que he visto es este post, sino que es realizado por el listado de los scripts contenidos en el manifiesto.

Cualquier ayuda se agradece. Gracias!

  • Su pregunta resuelto mi problema. Mediante la inyección de scripts contenidos a través del manifiesto, yo no era capaz de interactuar con la página web del DOM en un sentido verdadero. Ahora, la carga de contentScript a través de browser_action resuelto mi problema. Gracias. Apreciado.
InformationsquelleAutor NoR | 2013-06-15

2 Comentarios

  1. 58

    Contenido de los scripts de consola.los mensajes de registro se muestran en la página web de la consola en lugar del fondo de la página del inspector.

    La adición de debugger; funciona si el Desarrollador de la Herramienta (para la página web donde el contenido del script es inyectado) se abre.

    Por lo tanto, en este caso, primero debe activar la Herramienta de desarrollo (de la página web) antes de hacer clic en el navegador icono de acción y todo debería funcionar bien.

    • Excelente, funciona! Es el debugger; declaración de siempre necesario para obtener el depurador para reconocer secuencias de comandos de contenido en la extensión de medio ambiente? Parece que conseguir un pase para hacer los puntos de interrupción. Cualquier tiempo posterior intenta ejecutar la extensión, el contenido de los scripts se cargan en un entorno nuevo y usted pierde su original de los puntos de interrupción.
    • Depurador de persistir la carga de la página y siempre se romperá si usted tiene el Desarrollador de la Herramienta (F12) abierto. Están codificados en la secuencia de comandos, así que no te olvides de quitar después. Depurador de trabajo en javascript, que no son exclusivas de los contenidos de scripts.
    • Si el contenido de la secuencia de comandos tiene errores como que no coinciden entre corchetes (por ejemplo. olvido de cerrar ) después de pasar de una función en línea como un argumento), no se asigna ningún error y no silenciosamente incluso con debugger. Esto es muy frustrante. ¿Cómo puede la depuración de esto?
  2. 2

    Traté de usar la debuggermétodo, pero no es que no funcione bien porque el proyecto es el uso de require.js para agrupar los archivos de javascript.

    Si usted también está usando require.js para la extensión de chrome de desarrollo, usted puede tratar de añadir algo como este a la base de código, Y el cambio eval(xhr.responseText) a eval(xhr.responseText + "\n//@ sourceURL=" + url);. (como este pregunta)

    A continuación, puedes ver la fuente en el archivo de la herramienta dev (pero no el fondo de la ventana html)

Dejar respuesta

Please enter your comment!
Please enter your name here