javascript für - Wie bekomme ich den Fokus auf eine Chrome-Registerkarte, auf der Desktopbenachrichtigungen erstellt wurden?




3 Answers

Sie können window.focus () einfach in Google Chrome platzieren. Es wird sich auf dieses Fenster konzentrieren, wenn es angeklickt wird.

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

Ich habe den Inspector in Google Mail geöffnet, den obigen Code hinzugefügt, auf einen anderen Tab verschoben und ihn ausgeführt. Die Benachrichtigung wurde angezeigt und nach dem Klicken brachte sie mich zurück zu Gmail.

Hoffe das hat geholfen!

länge title

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?




window.focus() funktioniert nicht immer in den letzten Versionen von Webkit (Chrome, Safari usw.). Aber parent.focus() tut es.

Hier ist eine vollständige Jsfiddle: https://jsfiddle.net/wv0w7uj7/3/

Code:

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



Es sollte this.close() statt this.cancel() , so:

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



Related

javascript google-chrome webkit notifications gmail