acceder a la página html actual desde la extensión de Chrome

Soy nuevo en las extensiones de Chrome. Me gustaría crear una extensión de cromo simple que muestre una alerta con el título de la página html actual. cuando realizo: alert(document.title) , no lo obtengo porque el object del documento no pertenece a la página sino al script de extensión (¿es correcto?) ¿cómo obtengo el object del documento correcto?

Puedes usar el module de tabs :

 chrome.tabs.getCurrent(function(tab) { alert(tab.title); }); 

Los scripts de contenido son la forma más fácil de hacerlo:

Expande tu file de manifiesto con este código:

 ... "content_scripts": [ { "matches": ["http://urlhere/*"], "js": ["contentscript.js"] } ], ... 

Script de contenido (se ejecuta automáticamente en cada página como se menciona en las matches en el file de manifiesto):

 alert(document.title) 

La ventaja de usar scripts de contenido sobre los methods chrome.extension.* Es que su extensión no requiere permissions de miedo, como las tabs .


Ver también:

  • Guía del desarrollador
  • Guiones de contenido
  • Páginas de background

Por lo que haces todo lo que tienes que hacer es esto

 chrome.tabs.executeScript({ code: 'alert(document.title)' }) 

La API chrome.tabs.executeScript le permite ejecutar JavaScript en la página actual en lugar de hacerlo en la extensión, de modo que esto funciona bien, pero si desea usar el nombre de la página más adelante en una extensión más compleja que solo haría lo que pimvdb hizo

Yo uso esta extensión para hacer algo similar:

main.js:

(function(){window.prompt('Page title:', document.title)})()

manifest.json:

 { "background": {"scripts": ["background.js"]}, "browser_action": { "default_title": "popup_title" }, "name": "popup_title", "description": "Display the page title for copying", "permissions": [ "tabs", "http://*/*", "https://*/*" ], "version": "1.0", "manifest_version": 2 } 

background.js:

 chrome.browserAction.onClicked.addListener(function(tab) { chrome.tabs.executeScript(tab.id, {file: "main.js"}) });