Я хотел бы реализовать ту же функциональность, что и в Gmail. Когда приходит новое электронное письмо или новый чат, появляется всплывающее окно с уведомлением, и если вы щелкаете по нему, вкладка с Gmail становится активной.
У меня есть такой код:
var n = window.webkitNotifications.createNotification('ico.gif', 'Title', 'Text');
n.onclick = function(x) { this.cancel(); };
n.show();
Когда я нажимаю на уведомление, оно просто исчезает. Теперь мне нужно добавить код в функцию onclick, чтобы вызвать и сфокусировать страницу, на которой было создано это уведомление. Я знаю, что это возможно, потому что GMail очень хорошо с этим справляется. Но мне не удалось заглянуть в источники Gmail (они минимизированы и запутаны).
Кто-нибудь знает, как это сделать?
Ответы:
Вы можете просто разместить window.focus () в Google Chrome. При нажатии он будет фокусироваться на этом окне.
var n = window.webkitNotifications.createNotification('ico.gif', 'Title', 'Text'); n.onclick = function(x) { window.focus(); this.close(); }; 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(); }; });
источник
window.focus();
делает свое дело! Его следует отметить как правильный ответ.window.focus()
не работает на chrome 60, решение jazzcat сparent.focus()
работаетwindow.focus()
не всегда работает в последних версиях браузера Webkit (Chrome, Safari и т. д.). Но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(); }; } }
источник
this.close
лучше вызватьevt.target.close
событие onclick:notification.onclick = function (evt) { evt.target.close(); }
Это не очень хорошая практика
onclick
, использоватьaddEventListener
для ванильного javascript илиon
метод для jQuery.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();
источник