Tengo una extensión de cromo. Necesito analizar desde la fuente HTML de la página actual. Encontré aquí todo tipo de soluciones con páginas de fondo y scripts de contenido, pero ninguno me ayudó. Esto es lo que tengo hasta ahora:
manifest.json:Obteniendo el código fuente de HTML de la página actual desde la extensión de cromo
{
"name": "Extension",
"version": "1.0",
"description": "Extension",
"browser_action": {
"default_icon": "bmarkred.ico",
"popup": "Test.html"
},
"content_scripts": [
{
"matches": ["http://*/*"],
"js": ["content.js"]
}
],
"background": {
"page": "backgroundPage.html"
},
"permissions": [
"cookies",
"tabs",
"http://*/*",
"https://*/*"
]
}
background.html:
<html>
<head>
<script type="text/javascript">
try {
chrome.tabs.getSelected(null, function (tab) {
chrome.tabs.sendRequest(tab.id, {action: "getSource"}, function(source) {
alert(source);
});
});
}
catch (ex) {
alert(ex);
}
</script>
</head>
</html>
content.js:
chrome.extension.onRequest.addListener(function(request, sender, callback) {
if (request.action == "getSource") {
callback(document.getElementsByTagName('html')[0].innerHTML);
}
});
La alerta siempre alerta indefinido. incluso si cambio en el archivo content.js la función de devolución de llamada a:
callback('hello');
sigue el mismo resultado. ¿Qué estoy haciendo mal? tal vez estoy yendo en esto de la manera incorrecta. lo que realmente necesito es esto. Cuando el usuario abre la ventana emergente de extensión (y solo entonces), necesito HTML de la página actual para poder analizarlo. ¿alguna sugerencia?
Un problema es que el código en su página de fondo se ejecuta inmediatamente (antes se inyectan los guiones de contenido). Una pregunta muy similar/duplicada se ha hecho antes; Eche un vistazo a la respuesta en [Abra una nueva pestaña de Google Chrome y obtenga la fuente] (http://stackoverflow.com/a/10162291/938089?open-a-new-google-chrome-tab-and-get- la fuente). –
Gracias por su respuesta robar. Copié los segmentos del código en el enlace adjunto, pero todavía no funciona. El problema es que mi extensión es una ventana emergente y necesito obtener el HTML solo cuando el usuario abre mi extensión. por ejemplo, si la pestaña actual es facebook.com, solo cuando abra mi extensión, recuperaré la fuente html en mi archivo js (no el script de contenido o la página de fondo). –
Actualiza tu pregunta con tu código actual. El código debe contener comentarios que resalten el problema. –