2012-04-30 10 views
11

私が働いているクロムエクステンションにデスクトップ通知を作成しています。私が必要とする機能は、ユーザーが通知ウィンドウをクリックしたときに通知を引き起こしたタブに移動する必要がありました。 chrome.tabs APIを使用して作業することができますが、通知をクリックしたときにChromeを前面に表示する方法はわかりません。Chromeのデスクトップ通知コンテンツへのフォーカスクリックして

クロムでwindow.focus()が無効になっていることは知っていますが、これは間違いなくGmailデスクトップ通知の動作だからです。

答えて

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

...追加の権限なしで正常に動作します。

+1

が、これはまだ有効でしょうか?それは私のためには機能しません – rodi

+0

これは間違っています、これはHTML5 API用です。彼はChrome拡張APIについて質問しています。 – 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(); 

関連する問題