2015-08-11 33 views
12

Üzerinde çalıştığım bir proje için tarayıcı bildirimi ayarlamaya çalışıyorum. Bugüne kadar sahip kodu:Chrome'da tarayıcı bildirimi tıklandığında tarayıcı sekmesi otomatik olarak nasıl odaklanır?

// Notification permissions logic handled before... 
var notification = new Notification('Title', { body: 'Message' }); 
notification.onclick = function (e) { 
    window.focus(); 
    // this.cancel(); 
}; 
setTimeout(notification.close.bind(notification), 5000); 

bildirimleri bir şey hariç bu kodla iyi çalışır. Chrome'da bildirim tıklandığında, odak tarayıcı penceresine ayarlanmaz. Firefox'ta bu davranış, kutudan çıkar ve yukarıda tanımlanan tıklama işleyicisi olmadan düzgün çalışır. Ben Chrome için bu çözelti için baktı ve bu bulduk: Önerilen kabul çözümler benim için işe yaramaz Ancak

How to get focus to the tab when a desktop notification is clicked in Firefox?

How to get focus to a Chrome tab which created desktop notification?

- olayı tetiklenir ancak odak ayarlı değil.

Bunun nasıl yapılacağı konusunda herhangi bir öneride bulunur mu?

Chrome sürümü: Sürüm 44.0.2403.130 m

Firefox sürüm: 40.0

+0

Hiç bir çözüm bulmak? Benzer bir sorun yaşıyorum (bildirimlerle ilgili değil, yine de benimle kaybetme ve klavye odağını bir sekmeye geri getirememe). –

+0

@QuinxyvonBesiex Hayır Yok. Eğer bulursanız lütfen buradan cevap verin ... – Marko

+0

Güncellenmiş bir cevap gönderdim http://stackoverflow.com/a/40964355/714733 @Marko – jazzcat

cevap

2

Bir hacky çözüm, ama bir hizmet işçisi kayıtlı eğer böyle bir şey yapabilirdi. İstemci sayfasında

:

yourServiceWorkerRegistration.showNotification('Title', { 
    body: 'Message', 
}); 

hizmet işçisi olarak:

self.addEventListener('notificationclick', event => { 
    event.notification.close(); 

    event.waitUntil(
    clients.matchAll({ 
     type: "window", 
    }) 
    .then(clientList => { 
     if (clientList.length) { 
     clientList[0].focus(); 
     } 
    }) 
); 
}); 
İlgili konular