2012-04-30 12 views
11

Sto creando una notifica desktop nella mia estensione di Chrome su cui sto lavorando. La funzionalità di cui ho bisogno richiedeva che l'utente venga indirizzato alla scheda che ha causato la notifica quando fa clic sulla finestra di notifica. Posso farlo funzionare utilizzando l'API chrome.tabs, ma quello che non riesco a capire è come portare Chrome in primo piano quando si fa clic sulla notifica.Notifica desktop di Chrome fai clic per concentrarti sul contenuto

So che window.focus() è disabilitato in chrome, ma questo è sicuramente possibile fare poiché questo è il comportamento delle notifiche del desktop Gmail.

risposta

23
notification = webkitNotifications.createNotification(...) 
notification.onclick = function(){ 
    window.focus(); 
    this.cancel(); 
}; 
notification.show() 

... funziona come previsto, senza autorizzazioni aggiuntive.

+1

è presente ancora valido? Non funziona per me – rodi

+0

Questo è sbagliato, questo è per l'API HTML5, sta chiedendo dell'API chrome extension. – RVera

+0

Questo non funziona neanche per me. Facendo clic sulla notifica, la notifica viene chiusa e non viene impostato lo stato attivo sulla finestra. – Marko

6

Utilizzare chrome.tabs.update(tabId, {active: true}); per mettere a fuoco una scheda (da non confondere con chrome.windows.update).

Il tabId viene spesso ottenuto tramite Tab type. Questo oggetto è passato a molti metodi/listener di eventi (a volte tramite lo MessageSender type).

+0

Voglio accertarmi che sia la scheda sia attiva sia che la finestra sia focalizzata. Ti capita di sapere se è dannoso fare entrambi in parallelo o dovrei prima impostare la tab attiva, quindi impostare la finestra focalizzata sulla richiamata? –

2
function msg(){ 
    var notification = new Notification("Title", {body: "Yore message", icon: "img.jpg" }); 
    notification.onshow = function() { setTimeout(notification.close(), 15000); }; 
    notification.onclick = function(){ 
     window.focus(); 
     this.cancel(); 
    }; 
} 
msg(); 

Problemi correlati