如何把重点放在创build桌面通知的Chrome标签上?

我想实现与Gmail现在相同的function。 当新的电子邮件到达或新的聊天来了,通知popup窗口出现,如果你点击它,带有Gmail的选项卡变得焦点。

我有这个代码:

var n = window.webkitNotifications.createNotification('ico.gif', 'Title', 'Text'); n.onclick = function(x) { this.cancel(); }; n.show(); 

当我点击通知时,它就会消失。 现在我需要添加一些代码到onclick函数来调出并关注创build此通知的页面。 我知道这是可能的,因为GMail做得非常好。 但是我没有成功查看Gmail源代码(它们被简化和混淆)。

任何人都知道如何做到这一点?

您可以在Google Chrome中放置window.focus()。 单击时它将重点放在该窗口上。

 var n = window.webkitNotifications.createNotification('ico.gif', 'Title', 'Text'); n.onclick = function(x) { window.focus(); this.cancel(); }; n.show(); 

我在Gmail中打开了检查员,添加了上面的代码,移到不同的选项卡上,然后运行它。 通知出现,一旦点击,它将我带回Gmail。

希望有所帮助!

使用通知 。

 if (typeof Notification !== 'undefined') { alert('Please us a modern version of Chrome, Firefox, Opera or Safari.'); return; } Notification.requestPermission(function (permission) { if (permission !== 'granted') return; var notification = new Notification('Here is the title', { icon: 'http://path.to/my/icon.png', body: 'Some body text', }); notification.onclick = function () { window.focus(); }; }); 

在最近的Webkit浏览器版本(Chrome,Safari等)中, window.focus()并不总是工作。 但是parent.focus()

这是一个完整的jsfiddle: https ://jsfiddle.net/wv0w7uj7/3/

码:

 function notifyMe() { if (Notification.permission !== "granted") Notification.requestPermission(); else { var notification = new Notification('Notification title', { icon: 'http://cdn.sstatic.net/stackexchange/img/logos/so/so-icon.png', body: "You've been notified!", }); notification.onclick = function () { parent.focus(); window.focus(); //just in case, older browsers this.close(); }; } } 

使用onclick属性并不是很好的做法,对于香草javascript或jQuery的方法使用addEventListener

 var notify = new Notification('Test notification'); 

香草:

 notify.addEventListener('click', function(e) { window.focus(); e.target.close(); }, false); 

jQuery的:

 $(notify).on('click', function(e) { window.focus(); e.target.close(); }); 

它应该是this.close()而不是this.cancel() ,如下所示:

 var n = window.webkitNotifications.createNotification('ico.gif','Title', 'Text'); n.onclick = function(x) { window.focus(); this.cancel(); }; n.show();