2010-10-11 11 views

Répondre

1

Comme il semble qu'il n'y a pas de solution simple, c'est ce que j'ai fini par faire si quelqu'un était intéressé.

Pointer périodiquement la page d'arrière-plan à partir de la fenêtre contextuelle, et si la page d'arrière-plan n'est pas reçue ping dans un délai donné, elle déclenche l'action requise. Fonctionne comme une bombe à retardement :)

Dans la page d'arrière-plan:

var timeoutId = 0; 
function popupPing() { 
    if(timeoutId != 0) { 
     clearTimeout(timeoutId); 
    } 

    timeoutId = setTimeout(function() { 
     popupClosed(); 
     timeoutId = 0; 
    }, 1000); 
} 

function popupClosed() { 
    //... 
} 

dans une fenêtre:

ping(); 
function ping() { 
    chrome.extension.getBackgroundPage().popupPing(); 
    setTimeout(ping, 500); 
} 

(notez que pop-up pings 2 fois plus rapide que le temps "déclencheur" dans la page d'arrière-plan)

+2

Bien que j'espère vraiment qu'il ya une meilleure réponse (et s'il n'y a pas, nous devrions déposer un bug), c'est un hack assez cool. Une sorte d'interrupteur de l'homme mort: http://en.wikipedia.org/wiki/Dead_man's_switch – npdoty