javascript - disable - csp extension
Extensiones de Google Chrome: ¿Cómo incluir jQuery en el script de contenido inyectado mediante programación? (5)
Estoy inyectando mi script de contenido desde la página de fondo cuando el usuario hace clic en el botón de acción del navegador , de esta manera:
chrome.browserAction.onClicked.addListener(function (tab) {
chrome.tabs.executeScript(null, { file: "content.js" });
});
Entonces, ¿cómo puedo acceder a jQuery desde dentro de mi content.js
? No veo una forma de inyectar eso simultáneamente.
¿Qué tal si agregas esto a tu archivo de manifiesto?
"content_scripts": [
{
"js": [
"jquery.js",
"contentscript.js"
]
}
],
ACTUALIZAR:
Ejecute el segundo script después de que el primero sea más preciso en términos de orden de guiones, el result
es una matriz de resultados de ejecución del guión en la lista de pestañas.
chrome.tabs.executeScript(null, {file:''js/jquery-2.1.1.min.js''}, function(result){
chrome.tabs.executeScript(null, {file:''js/myscript.js''});
});
ANTIGUO:
Inyectar Jquery seguido de su script le dará la capacidad de acceder a Jquery dentro de su script.
chrome.tabs.executeScript(null, {file:''js/jquery-2.1.1.min.js''});
chrome.tabs.executeScript(null, {file:''js/myscript.js''});
Usted tiene más control sobre cómo se debe inyectar la secuencia de comandos como se describe here . allFrames
propiedad allFrames
es especialmente importante si desea allFrames
script en todos los marcos del documento. Ignorarlo solo se inyectará en el marco superior. Como no se menciona en otras respuestas, adivina que te ayuda. Los scripts se pueden inyectar siempre agregándolo al manifiesto como se describe here .
Como tengo muchos scripts con muchas dependencias, utilizo una función concatenateInjection
que toma tres parámetros:
//id: the tab id to pass to executeScript
//ar: an array containing scripts to load ( index order corresponds to execution order)
//scrpt (opzional): the last script to execute (if not provided, than the last script is the last insert in previous array)
function concatenateInjections(id, ar, scrpt){
var i = ar.length;
var idx = 0;
function inject(idx){
idx++;
if(idx <= i){
var f = ar[idx-1];
chrome.tabs.executeScript(id, { file: f }, function() {
inject(idx);
});
}else{
if(typeof scrpt === ''undefined'') return;
chrome.tabs.executeScript(id, { file: scrpt });
}
}
inject(idx);
}
y ejemplo de uso:
// id is tab id
// sources: first execute jquery, than default.js and anime.js in the end
var def = [
"lib/jquery-1.11.3.min.js",
"lib/default.js",
"injection/anime.js"
];
// run concatenate injections
concatenateInjections(id, def);
Piensa que podría ser útil.
ACTUALIZAR
Versión con concat y cierre (más estética):
function concatenateInjections(id, ar, scrpt){
if( typeof scrpt !== ''undefined'' ) ar = ar.concat([scrpt]);
var i = ar.length;
var idx = 0 ;
(function (){
var that = arguments.callee;
idx++;
if(idx <= i){
var f = ar[idx-1];
chrome.tabs.executeScript(id, { file: f }, function(){ that(idx);} );
}
})();
}
Qué pasa:
chrome.tabs.executeScript(null, { file: "jquery.js" }, function() {
chrome.tabs.executeScript(null, { file: "content.js" });
});
Puede descargar "jquery.js" desde aquí: http://jquery.com/download/
cada vez que quiera insertar dinámicamente jQuery, recomiendo este script
personalmente tengo una búsqueda personalizada de Chrome " $
" que reemplaza $
con
javascript:
var jq = document.createElement(''script'');
jq.onload = function(){};
jq.src = "https://code.jquery.com/jquery-2.1.1.min.js";
document.querySelector(''head'').appendChild(jq);
javascript:
es solo la forma de ejecutar javascript desde la barra de direcciones
Uso esto en mi about:blank
página en about:blank
cuando estoy tratando de burlarme de alguna situación css rápidamente