2012-06-07 12 views

Respuesta

27

La verdadera respuesta es que no es necesario utilizar "funciones privadas autoejecutables". Debe comprender que las secuencias de comandos de contenido son executed in isolation, por lo que no pueden entrar en conflicto con los recursos utilizados por los sitios web por diseño.

Si desea utilizar una biblioteca en su secuencia de comandos de contenido, el método preferido es simplemente incluirlo en su extensión/aplicación y luego cargarlo primero en su manifiesto;

{ 
    ... 
    "content_scripts": [ 
    { 
     "matches": ["http://www.google.com/*"], 
     "js": ["jquery.js", "myscript.js"] 
    } 
    ] 
    ... 
} 

Esto dará lugar a jquery.js ser cargado a su entorno de secuencias de contenido privado y luego MyScript.js. Su código será mucho más limpio y modular ya que no contiene código minified para bibliotecas externas.

Fuente:https://developer.chrome.com/extensions/content_scripts

+1

Esto no es un problema debido a la forma en que las secuencias de comandos de contenido cambian el entorno de JavaScript. La sección [entorno de ejecución] (http://code.google.com/chrome/extensions/content_scripts.html#execution-environment) de la documentación oficial lo cubre bastante bien. – Alasdair

+0

Veo que el documento cubre exactamente el caso de jquery: "Por ejemplo, un script de contenido podría incluir JQuery v1 y la página podría incluir JQuery v2, y no entrarían en conflicto entre sí". –

+0

jQuery en sí mismo es solo una biblioteca y no realiza ningún cambio que no le indique. Como la mayoría de las bibliotecas comunes de bibliotecas, solo expone su funcionalidad mediante el uso de una o más variables globales. Si está utilizando una biblioteca que cambia el DOM sin ninguna instrucción, probablemente sea consciente de ello, ya que ese comportamiento presuntamente va de la mano con su funcionalidad. – Alasdair

Cuestiones relacionadas