2011-04-01 16 views
20

Tengo una pregunta sobre cómo escribir Google Chrome Extension. Mi objetivo ahora es detectar eso si se crea una pestaña o se ha cambiado una URL de una pestaña.Cómo detectar pestañas ¿Cambiar URLs o crear pestañas en Google Chrome Extension?

Prácticamente, quiero insertar un diccionario .js desde un enlace en línea a cualquier página web en Chrome, y el script se ejecutará como background.html. Por ejemplo, si abre el navegador y va a su página de inicio, ejecutará la secuencia de comandos para insertar dictionary.js en esa página. Cuando se crea una nueva pestaña o se abre una página nueva, también se ejecutará la secuencia de comandos. Y cuando las personas cambien la URL de la pestaña, también ejecutará la secuencia de comandos. ¿Cómo puedo detectar si la pestaña cambia en tales situaciones? Ok, aquí está mi ... código, supongo, para explicar eso.

chrome.someFunctionThatDetectTheSituationsAbove(function() { 
    insertDictionaryScript();//I'd love to have the script of detection, not the insertDictionaryScript(); 
} 

Agradecería cualquier idea. Gracias. :PAG.

[x]

Respuesta

6

Lo que usted describe se llama un script de contenido. No necesita ningún código para eso, solo haga una declaración en el archivo de manifiesto. Más sobre las secuencias de comandos de contenido here.

+0

Gracias por su comentario. Me entendiste mal, creo. Porque utilizo para el archivo de manifiesto, pero solo funciona una vez cuando se inicia la extensión. Ok, por ejemplo, me gustaría 'alertar (" ¡HOLA! ");' En el background.html. Entonces cada vez que enciendo la extensión, alerta "Hola". Pero cuando cambia la URL de la página o abre pestañas nuevas ... no se ejecutará nuevamente. Entonces, ¿cómo puedo detectar esas situaciones en las que se cambian las pestañas urls, o se crean pestañas nuevas ... [x] – xx3004

+0

@ xx3004 No necesita una página de fondo para esto, solo declare su dictionary.js como un script de contenido en el manifiesto y se incluirá automáticamente cuando se crea una nueva pestaña, se cambia la URL, etc. – serg

+0

Te tengo, no debería haberlo puesto en background.html. ¡Muchas gracias! [x] – xx3004

2

Puede detectar la creación de una nueva pestaña agregando un detector al evento onCreated.

Puede detectar el cambio de URL de la pestaña agregando un oyente al evento onUpdated.

+0

¡Gracias por su ayuda! Creo que debería usar la declaración del script de contenido. Pero esto puede ser útil para otra cosa: P. Una vez más, gracias. [x] – xx3004

49

Sólo tiene que añadir esto en sus background.js:

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { 
    insertDictionaryScript(); 
}); 

chrome.tabs.onCreated.addListener(function(tab) {   
    insertDictionaryScript(); 
}); 
+2

¡Gracias por su ayuda! ¡Muy claro! Creo que sé qué hacer ahora. [x] – xx3004

+1

La actualización se ejecuta muchas veces cuando el contenido de la web se actualiza. – vanduc1102

+0

@ vanduc1102 - puede verificar si la URL ha cambiado, p. 'if (changeInfo.url) myFunc();' – thesbros

9

También hay onActivated evento:

chrome.tabs.onActivated.addListener(function(tabId, changeInfo, tab) { 
    insertDictionaryScript(); 
}); 
+4

La firma de devolución de llamada 'onActivated' es incorrecta; ahora se necesita un solo objeto. Ver http://developer.chrome.com/extensions/tabs.html#event-onActivated – vaughan

Cuestiones relacionadas