2011-02-09 42 views
24

Estoy intentando cargar JQuery en mi extensión de Chrome y hacerlo igual a un objeto, pero me pregunto cómo voy a hacerlo. Básicamente me gustaría algo como ...Carga JQuery en una extensión de Chrome?

jQuery = loadLibraries("jquery-1.4.2.min.js"); 

¿Cómo podría hacer esto?

editar: Inyecto en el script de contenido.

+0

¿Inyectar dónde - en la secuencia de comandos de contenido o página de fondo? – serg

+0

Inyecto en el script de contenido – Skizit

+0

Si está buscando cómo agregar jQuery a una extensión emergente (como yo), consulte esta pregunta: http://stackoverflow.com/questions/12035242/loading-jquery -incromo-extensión –

Respuesta

3

Compruebe el answer by jdc aquí en este mismo hilo.

Editar: Esta respuesta era bastante antigua y ya no refleja las prácticas actuales. Gracias por el aviso.

+0

No condenar por estar en desacuerdo, pero sería bueno compartir el motivo del voto a favor para que todos puedan aprender/debatir. –

+7

Hola Rodrigo, lo siento, por lo general dejo comentarios pero debo haberlo olvidado. Los enlaces de referencia por sí solos no deben ser respuestas en Desbordamiento de pila, ya que si se rompen, su respuesta sería inútil. Seguí adelante e hice una edición en tu nombre y eliminé mi voto negativo. ¡Espero que esto ayude! – jmort253

+0

@ jmort253, me alegra que hayas editado esta publicación porque el enlace está muerto (tiene 6 años, así que no es sorpresa). Además, esta solución es incompleta o incorrecta. Para cargar un archivo desde una fuente externa, el desarrollador necesita establecer una política de seguridad del contenido. "content_security_policy": "[cadena de directiva VA AQUÍ]" por: https://developer.chrome.com/extensions/contentSecurityPolicy en mi humilde opinión, la mejor forma es utilizar el método que JDC publicada. – richb01

48

Usted sólo puede poner en jquery.js carpeta de extensión e incluirlo en el manifiesto:

{ 
    "name": "My extension", 
    ... 
    "content_scripts": [ 
    { 
     "matches": ["http://www.google.com/*"], 
     "css": ["mystyles.css"], 
     "js": ["jquery.js", "myscript.js"] 
    } 
    ], 
    ... 
} 

Usted no necesita preocuparse por los conflictos con jQuery en una página principal como scripts de contenido se sandboxed.

+0

, pero ¿y si quiero lo siguiente ... '_ $ = función (selector, contexto) {return new jQuery.fn.init (selector, context || document); }; 'y adjuntar oyentes al _ $ objeto? Además, ¿qué está haciendo el parámetro 'coincidencias' que estás alimentando? – Skizit

+0

@Skizit Bien, haz con jQuery lo que quieras, como en una página normal. No entiendo completamente lo que estás tratando de hacer allí. Aquí puede leer acerca de las secuencias de comandos de contenido que responderán a sus preguntas de manifiesto: http://code.google.com/chrome/extensions/dev/content_scripts.html – serg

+1

Recibo "No se pudo cargar la extensión desde: ~/work/ba/chromeExtensions/buyamerica No se pudo cargar javascript 'jquery-2.1.3.min.js' para el script de contenido. " pero el archivo está allí –

11

Usted puede hacer esto desde un script en el código HTML BACKGROUND_PAGE:

chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.tabs.executeScript(null, { file: "jquery.min.js" }, function() { 
    chrome.tabs.executeScript(null, { file: "content_script.js" }); 
    }); 
}); 

Luego, en content_script.js hacer lo que quiera:

$('#header').hide(); 

Tenga en cuenta que incluso si la página que ha inyectado en ya tiene jQuery cargado, todavía está golpeando su propia instancia del objeto jQuery, que está accediendo a la página a través del DOM. (documento).

+3

lo que es "BACKGROUND_PAGE" y "content_script.js"? –

5
"content_scripts": [ { 
    "matches": ["http://*/*"], 
    "js": ["jquery.min.js"] 
} ] 
Cuestiones relacionadas