2011-10-08 11 views
9

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 estoy realizando: alert(document.title), no lo obtengo porque el objeto del documento no pertenece a la página sino al script de extensión (¿es correcto?) ¿cómo obtengo el objeto del documento correcto?accediendo a la página html actual desde la extensión de cromo

Respuesta

3

Puede utilizar el tabs module:

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

guiones de contenido son la forma más fácil de ir:

Ampliar su archivo de manifiesto con este código:

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

escritura de contenido (ejecutado automáticamente en cada página como se mencionó al matches en el archivo de manifiesto):

alert(document.title) 

La ventaja de utilizar guiones de contenido más chrome.extension.* métodos es que su extensión no requiere sc permisos ary, como tabs.


Consulte también:

+0

@ Rob W: Yo sólo hizo una pregunta similar http://stackoverflow.com/questions/1964225/accessing-current-tab -dom-object-from-popup-html. Pero en mi caso, la extensión está enviando la información de la pestaña actual a mi aplicación de marcadores. Por lo que entiendo su respuesta, cualquier página que intente marcar debe ser incluida en el archivo de manifiesto. ¿Es esto correcto? En ese caso, será inútil. Gracias. – Zeynel

+1

@Zeynel Luego incluya '" * "': '" coincidencias ": [" * "],' –

+0

@ Rob W: Gracias. Puede que no esté haciendo esto bien, pero tuve que ingresar '" coincidencias ":" "http: // */*"], 'para que funcione de acuerdo con este http://code.google.com/chrome/extensions /match_patterns.html de lo contrario, recibí 'Falta el separador de esquema' No lo he probado todavía, pero al menos la extensión cargó. Gracias de nuevo. – Zeynel

1

Por lo que estás haciendo todo lo que nee d hacer es esto

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

la API chrome.tabs.executeScript le permite ejecutar JavaScript de la página actual en lugar de en la extensión por lo que este funciona muy bien, pero si usted desea utilizar el nombre de la página más tarde en una extensión de más compleja de lo que me acaba de hacer lo que hicieron pimvdb

+1

¿Esto requeriría agregar 'unsafe-eval' a CSP? – Xan

0

que utilizan 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"}) 
}); 
Cuestiones relacionadas