En el archivo manifest.json, declaro que yo quiero para inyectar algunas secuencias de comandos, así:En la extensión de Chrome, las secuencias de comandos de contenido no pueden afectar dentro del iframe.
{
"name": "my extension",
"version": "1.0",
"background_page": "background.html",
"permissions": ["contextMenus", "tabs", "http://*.example.com/*"],
"content_scripts": [
{
"matches":
[
"http://*.taobao.com/*",
"http://*.yintai.com/*"
],
"run_at": "document_idle",
"js": ["jquery-1.5.1.min.js","jquery-ui-1.8.13.custom.min.js", "contentscript.js"],
"all_frames": true
}
]
}
En el guión de contenidos, se crea un iframe, entre otras cosas. Funciona bien hasta ahora. De esta manera:
$('<div id="my_notifier"></div>').appendTo($('body')).html('<iframe src="http://example.com"></iframe>');
El problema es, dentro del marco flotante, no hereda nada de los guiones de contenido. Si quiero usar jQuery, tengo que usar <script src=...
para incluirlo nuevamente dentro del iframe.
Prefiero no incluir jQuery nuevamente porque ya lo puse en la extensión. No deseo que el usuario descargue jQuery una y otra vez en cada página en la que la extensión deba ejecutarse.
He intentado con el atributo "all_frames": true
, pero no funciona.
Por favor, asesorar. Gracias.
Edit: example.com añadió al atributo matches
así:
"content_scripts": [
{
"matches":
[
"http://*.taobao.com/*",
"http://*.yintai.com/*",
"http://*.example.com/*"
],
"run_at": "document_idle",
"js": ["jquery-1.5.1.min.js","jquery-ui-1.8.13.custom.min.js", "contentscript.js"],
"all_frames": true
}
]
Pero no funciona.
Para ser más claro, por ejemplo el contenido del iframe (example.com) es:
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
</head>
<body>
<div></div>
<script type="text/javascript">
$('div').html('hi');
</script>
</body>
</html>
Habrá un error: $ no está definido
Para que funcione, tengo que utilizar:
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
</head>
<body>
<div></div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
$('div').html('hi');
</script>
</body>
</html>
¿Puedes mostrar tu manifiesto completo con el conjunto 'all_frames' y tu código de script de contenido que crea iframe? – serg
Ok, he editado la pregunta. – Betty
Hola Betty, ahora que Serg ha resuelto el problema inicial, eche un vistazo a esta pregunta al esperar hasta que el marco se haya cargado para acceder a ella: http: // stackoverflow.com/questions/4669089/how-to-inject-an-iframe-panel-to-a-google-chrome-extension-and-add-click-event-in – Darin