2012-04-30 13 views
11

Estoy creando notificaciones de escritorio en mi extensión de cromo en la que estoy trabajando. La funcionalidad que necesito requiere que el usuario sea llevado a la pestaña que causó la notificación cuando hacen clic en la ventana de notificación. Puedo hacer que funcione usando la API chrome.tabs, pero lo que no puedo entender es cómo poner Chrome al frente cuando se hace clic en la notificación.Notificación de escritorio de Chrome haz clic para enfocarte en el contenido

Sé que window.focus() está deshabilitado en Chrome, pero esto definitivamente es posible ya que ese es el comportamiento de las notificaciones de escritorio de Gmail.

Respuesta

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

... funciona como se esperaba, sin ningún permiso adicional.

+1

es esto sigue siendo válido? No funciona para mí – rodi

+0

Esto está mal, esto es para la API de HTML5, él pregunta sobre la API de extensión de Chrome. – RVera

+0

Esto tampoco funciona para mí. Al hacer clic en la notificación, simplemente cierra la notificación y no establece el foco en la ventana. – Marko

6

Utilice chrome.tabs.update(tabId, {active: true}); para enfocar una pestaña (no confundir con chrome.windows.update).

El tabId a menudo se obtiene a través del Tab type. Este objeto se pasa a muchos métodos/detectores de eventos (a veces a través del MessageSender type).

+0

Quiero asegurarme de que tanto la pestaña se activa como la ventana se centra. ¿Sabes por casualidad si es dañino hacer ambas cosas en paralelo o debo establecer la pestaña activa primero, y luego configurar la ventana enfocada en la devolución de llamada? –

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(); 

Cuestiones relacionadas