2011-03-15 22 views
5

Tengo un requisito donde el background.html continuamente se actualiza cada 10 minutos y cuando hago clic en la ventana emergente, debe activar el fondo para actualizar inmediatamente y mostrar el resultado en la ventana emergente.ventana emergente de cromo emergente y fondo ajax

Tengo la actualización de fondo usando ajax funcionando y tengo la ventana emergente activando el fondo para hacer una actualización inmediata usando ajax también. Sin embargo, estoy atascado en cómo mostrar el último resultado en la ventana emergente ... ¿cómo puedo saber cuándo se completó la llamada ajax de fondo y mostrar el último resultado en la ventana emergente?

gracias

Respuesta

13

Bueno, si quieres escuchar los cambios en el fondo de página, tienes dos maneras de hacer lo que quiere.

  1. En su emergente, puede registrarse chrome.extension.onRequest.addListener en su página emergente, y en su página de fondo se puede chrome.extension.sendRequest cuando se actualizan las cosas.
  2. Tiene acceso directo a Popup DOM, puede obtener una instancia de chrome.extension.getViews({type:'popup'}), y una vez que la obtiene, puede simplemente llamar a un método en ese DOM. Desde la ventana emergente, puede acceder fácilmente a la página de fondo también con chrome.extension.getBackgroundPage(). En ambos casos, se obtiene una DOMWindow devuelta.

Yo personalmente usaría el n. ° 2 porque pertenece al mismo proceso de extensión, no necesita comunicarse con un Script de contenido inyectado.

var popups = chrome.extension.getViews({type: "popup"}); 
if (popups.length != 0) { 
    var popup = popups[0]; 
    popup.doSomething(); 
} 

Espero que esto ayude.

+0

Me gustaría hacer chrome.extension.getViews (['popup']) pero me da un error diciendo que no se esperaba una matriz ... – khan

+0

Error no detectado: Valor inválido para el argumento 1. Esperado 'objeto' pero obtenido ' formación'. – khan

+0

Siempre debe leer la documentación, no escribí código :) http://code.google.com/chrome/extensions/extension.html#method-getViews He actualizado mi respuesta con algún código. –