2012-04-30 4 views
11

Я создаю уведомление на рабочем столе в своем расширении chrome, над которым я работаю. Необходимые функции требуют, чтобы пользователь был доставлен на вкладку, вызвавшую уведомление, когда они нажимают на окно уведомлений. Я могу получить эту работу с помощью API chrome.tabs, но то, что я не могу понять, это то, как перенести Chrome на передний план при нажатии на уведомление.Уведомление на рабочем столе Chrome Нажмите, чтобы сфокусироваться на контенте

Я знаю, что window.focus() отключен в хроме, но это определенно возможно, так как это поведение уведомлений рабочего стола Gmail.

ответ

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

... работает как ожидалось, без каких-либо дополнительных разрешений.

+1

это еще в силе? Это не работает для меня – rodi

+0

Это неправильно, это для HTML5 api, он спрашивает о API расширения chrome. – RVera

+0

Это тоже не работает для меня. Нажатие на уведомление просто закрывает уведомление и не устанавливает фокус на окне. – Marko

6

Используйте chrome.tabs.update(tabId, {active: true});, чтобы сфокусировать вкладку (не путать с chrome.windows.update).

tabId часто можно получить через Tab type. Этот объект передается многим методам/прослушивающим событиям (иногда через MessageSender type).

+0

Я хочу, чтобы обе вкладки были активны, и окно фокусируется. Вы случайно не знаете, вредно ли это делать одновременно, или я должен сначала настроить вкладку, а затем установить окно, ориентированное на обратный вызов? –

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

Смежные вопросы