[javascript] Wie bekomme ich den Fokus auf eine Chrome-Registerkarte, auf der Desktopbenachrichtigungen erstellt wurden?


Answers

Notifications

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

Ich möchte die gleiche Funktionalität wie Google Mail heute implementieren. Wenn eine neue E-Mail eingeht oder ein neuer Chat eingeht, wird ein Popup-Fenster mit Benachrichtigungen angezeigt. Wenn Sie darauf klicken, wird der Tab mit Gmail aktiviert.

Ich habe diesen Code:

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

Wenn ich auf die Benachrichtigung klicke, verschwindet sie einfach. Jetzt muss ich der Onclick-Funktion Code hinzufügen, um die Seite, die diese Benachrichtigung erstellt hat, aufzurufen und zu fokussieren. Ich weiß, dass es möglich ist, weil GMail es sehr gut macht. Aber es ist mir nicht gelungen, Gmail-Quellen zu untersuchen (sie sind minimalisiert und verschleiert).

Weiß jemand, wie man das macht?




Es ist nicht wirklich onclick , die onclick Eigenschaft zu verwenden, den addEventListener für vanilla javascript oder die Methode für jQuery zu verwenden.

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

Vanille:

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

jQuery:

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



Related