Ich möchte die gleiche Funktionalität implementieren, die Google Mail heutzutage hat. Wenn eine neue E-Mail eintrifft oder ein neuer Chat eingeht, wird ein Benachrichtigungs-Popup angezeigt. Wenn Sie darauf klicken, wird die Registerkarte mit Google Mail fokussiert.
Ich habe diesen Code:
var n = window.webkitNotifications.createNotification('ico.gif', 'Title', 'Text');
n.onclick = function(x) { this.cancel(); };
n.show();
Wenn ich auf Benachrichtigung klicke, verschwindet sie einfach. Jetzt muss ich der Onclick-Funktion Code hinzufügen, um die Seite aufzurufen und zu fokussieren, die diese Benachrichtigung erstellt hat. Ich weiß, dass es möglich ist, weil GMail es sehr gut macht. Es ist mir jedoch nicht gelungen, Google Mail-Quellen zu untersuchen (sie sind minimiert und verschleiert).
Weiß jemand wie das geht?
Antworten:
Sie können window.focus () einfach in Google Chrome platzieren. Beim Klicken wird das Fenster fokussiert.
Ich habe den Inspektor in Google Mail geöffnet, den obigen Code hinzugefügt, bin zu einer anderen Registerkarte gewechselt und habe ihn ausgeführt. Die Benachrichtigung wurde angezeigt und brachte mich nach dem Klicken zurück zu Google Mail.
quelle
Mit Benachrichtigungen .
quelle
window.focus();
macht den Trick! Es sollte als richtige Antwort markiert werden.window.focus()
nicht auf Chrom 60 arbeiten, die Jazzcat-Lösung mitparent.focus()
Werkenwindow.focus()
funktioniert nicht immer in aktuellen Webkit-Browserversionen (Chrome, Safari usw.). Aberparent.focus()
tut es.Hier ist eine vollständige jsfiddle: https://jsfiddle.net/wv0w7uj7/3/
Code:
quelle
this.close
, ist es besser,evt.target.close
das Ereignis 'onclick' aufzurufen:notification.onclick = function (evt) { evt.target.close(); }
Es ist nicht wirklich empfehlenswert, die
onclick
Eigenschaft, dasaddEventListener
Vanille-Javascript oder dieon
Methode für jQuery zu verwenden.Vanille:
jQuery:
quelle
Es sollte
this.close()
eherthis.cancel()
so sein:quelle