2012-11-03 10 views
6

Sto sviluppando un'estensione di Chrome e volevo sapere se è possibile chiudere un popup semplicemente facendo nuovamente clic sull'icona che consente di aprire il popup: Ho provato qualsiasi cosa, ma sembra che tu debba fare clic altrove per chiuderla. Il documento afferma che l'evento onClicked è:Chiudi un popup dell'estensione di Chrome facendo di nuovo clic sull'icona di azione del browser

Attivato quando si fa clic su un'icona di azione del browser. Questo evento non si attiva se l'azione del browser ha un popup (http://developer.chrome.com/extensions/browserAction.html#popups).

Grazie in anticipo.

[UPDATE] ho provato quanto segue e che la metà funziona (!): 1. in popup.html I link popup.js; 2. popup.js legge il valore di una variabile contenuta in background.js;

var currentStatus = chrome.extension.getBackgroundPage().open; 
if(currentStatus==0){ 
    chrome.extension.getBackgroundPage().open=1; 
}else{ 
    chrome.extension.getBackgroundPage().open=0; 
    window.close(); 
} 

cosa succede: il primo clic si apre l'applicazione, il secondo chiude, ma rimane un micro pop-up senza contenuti su l'icona. Se rimuovo, ho raggiunto il mio obiettivo.

+1

vi raccomando vivamente di scegliere una proprietà diversa da quella 'open', perché si sta ora sovrascrivendo la funzione built-in' window.open' di sfondo della pagina. –

+0

@Rob W: Ho rimosso tutto il codice, dal momento che non sono riuscito a trovare alcun modo per farlo funzionare correttamente. Grazie per il tuo commento! – ContentiousMaximus

+1

Sembra che in Chrome 28, facendo clic su un'icona di azione del browser una seconda volta si chiuda un pop-up, non è necessario alcun codice speciale. –

risposta

3

L'evento onClicked viene chiamato se l'azione del browser dell'estensione non definisce default_popup nel manifest. Quella nota dalla documentazione non riguarda se il popup è attualmente aperto.

Se il manifest definisce default_popup, quindi facendo nuovamente clic sul pulsante si chiude e si riapre il plug-in. Il mousedown si chiude e si apre il mouseup. (Così facendo clic sul pulsante e trascinando via e rilasciando il mouse non chiudere il popup, non che qualcuno dovrebbe fare questo.)

vi consiglio di impostare default_popup e facendo un pulsante nel codice HTML per il pop-up che chiude il popup con window.close; , o trova un punto nel caso d'uso del tuo popup in cui la chiusura ha senso.

1

Beh È passato molto tempo e il problema/bug persiste sui browser Chrome. Ho trovato una soluzione alternativa, non è eccezionale, ma fa ciò di cui ho bisogno: chiude la finestra con una seconda icona. Ecco quello che ho fatto nel popup file javascript:

if(localStorage.getItem('firstClick')==='true'){ 
    localStorage.setItem('firstClick', 'false'); 
    window.close(); 
} 
else { 
    localStorage.removeItem('firstClick'); 
    localStorage.set('firstClick', 'true') 
} 
Problemi correlati