Frage

Wie kann ich mithilfe von JavaScript den Browser eines Benutzers in der Taskleiste blinken/blinken/hervorheben lassen?Wenn ich beispielsweise alle 10 Sekunden eine AJAX-Anfrage stelle, um zu sehen, ob der Benutzer neue Nachrichten auf dem Server hat, möchte ich, dass der Benutzer dies sofort weiß, auch wenn er gerade eine andere Anwendung verwendet.

Bearbeiten:Diese Benutzer möchten abgelenkt werden, wenn eine neue Nachricht eintrifft.

War es hilfreich?

Lösung

Dadurch blinkt die Taskleistenschaltfläche nicht in wechselnden Farben, aber der Titel blinkt, bis die Maus bewegt wird.Dies sollte plattformübergreifend funktionieren, auch wenn sie es nur in einem anderen Tab haben.

newExcitingAlerts = (function () {
    var oldTitle = document.title;
    var msg = "New!";
    var timeoutId;
    var blink = function() { document.title = document.title == msg ? ' ' : msg; };
    var clear = function() {
        clearInterval(timeoutId);
        document.title = oldTitle;
        window.onmousemove = null;
        timeoutId = null;
    };
    return function () {
        if (!timeoutId) {
            timeoutId = setInterval(blink, 1000);
            window.onmousemove = clear;
        }
    };
}());

Aktualisieren:Vielleicht möchten Sie sich die Verwendung ansehen HTML5-Benachrichtigungen.

Andere Tipps

Ich habe ein gemacht jQuery-Plugin zum Zweck blinkender Benachrichtigungen in der Titelleiste des Browsers.Sie können verschiedene Optionen angeben, z. B. Blinkintervall, Dauer, ob das Blinken aufhören soll, wenn das Fenster/die Registerkarte fokussiert wird usw.Das Plugin funktioniert in Firefox, Chrome, Safari, IE6, IE7 und IE8.

Hier ist ein Beispiel für die Verwendung:

$.titleAlert("New mail!", {
    requireBlur:true,
    stopOnFocus:true,
    interval:600
});

Wenn Sie jQuery nicht verwenden, sollten Sie sich vielleicht trotzdem das ansehen Quellcode (Es gibt ein paar skurrile Fehler und Grenzfälle, die Sie beim Titel-Blinken umgehen müssen, wenn Sie alle gängigen Browser vollständig unterstützen möchten.)

Angeblich können Sie dies unter Windows mit der Javascript-API von Growl für Windows tun:

http://ajaxian.com/archives/growls-for-windows-and-a-web-notification-api

Ihre Benutzer müssen jedoch Growl installieren.

Irgendwann wird dies in Form der NotificationAPI Teil von Google Gears sein:

http://code.google.com/p/gears/wiki/NotificationAPI

Daher würde ich empfehlen, vorerst den Growl-Ansatz zu verwenden, nach Möglichkeit auf Fenstertitelaktualisierungen zurückzugreifen und bereits Versuche zu planen, die Gears-Benachrichtigungs-API zu verwenden, wenn sie irgendwann verfügbar wird.

Meine Antwort auf die Benutzeroberfläche lautet:Bist du sicher Ihre Benutzer wollen, dass ihre Browser blinken, oder tun es du denkst das wollen sie?Wenn ich derjenige wäre, der Ihre Software verwendet, wäre ich sicher verärgert, wenn diese Warnungen sehr oft auftauchen und mir im Weg stehen würden.

Wenn Sie sicher sind, dass Sie dies auf diese Weise tun möchten, verwenden Sie ein Javascript-Warnfeld.Das ist es, was Google Kalender für Terminerinnerungen macht, und sie haben sich wahrscheinlich einige Gedanken darüber gemacht.

Eine Webseite ist wirklich nicht das beste Medium für Benachrichtigungen, die Sie unbedingt wissen müssen.Wenn Sie etwas nach "ZOMG" entwerfen, sind die Server unten! " Warnungen, automatisierte E-Mails oder SMS-Nachrichten an die richtigen Personen können den Trick machen.

Die einzige Möglichkeit, die ich mir vorstellen kann, besteht darin, so etwas wie „alert('you have a new message')“ auszuführen, wenn die Nachricht empfangen wird.Dadurch wird die Taskleiste blinken, wenn das Fenster minimiert ist, aber es wird auch ein Dialogfeld geöffnet, was Sie möglicherweise nicht möchten.

Warum nicht den Ansatz von GMail übernehmen und die Anzahl der Nachrichten im Seitentitel anzeigen?

Manchmal möchten Benutzer nicht abgelenkt werden, wenn eine neue Nachricht eintrifft.

                var oldTitle = document.title;
                var msg = "New Popup!";
                var timeoutId = false;

                var blink = function() {
                    document.title = document.title == msg ? oldTitle : msg;//Modify Title in case a popup

                    if(document.hasFocus())//Stop blinking and restore the Application Title
                    {
                        document.title = oldTitle;
                        clearInterval(timeoutId);
                    }                       
                };

                if (!timeoutId) {
                    timeoutId = setInterval(blink, 500);//Initiate the Blink Call
                };//Blink logic 

Vielleicht möchten Sie window.focus() ausprobieren – es kann jedoch ärgerlich sein, wenn der Bildschirm umschaltet

Sie können den Titel der Webseite bei jeder neuen Nachricht ändern, um den Benutzer darauf aufmerksam zu machen.Ich habe dies für einen Browser-Chat-Client gemacht und die meisten Benutzer waren der Meinung, dass es gut genug funktioniert.

document.title = "[user] hello world";

AFAIK, es gibt keine gute Möglichkeit, dies konsequent zu tun.Ich habe einen webbasierten IM-Client nur für den IE geschrieben.Am Ende haben wir window.focus() verwendet, was die meiste Zeit funktioniert.Manchmal führt es tatsächlich dazu, dass das Fenster der Vordergrund-App den Fokus entzieht, was sehr ärgerlich sein kann.

Diese Benutzer möchten abgelenkt werden, wenn eine neue Nachricht eintrifft.

Es klingt, als würden Sie eine App für ein internes Unternehmensprojekt schreiben.

Vielleicht möchten Sie das Schreiben einer kleinen Windows-App in .net untersuchen, die ein Benachrichtigungssymbol hinzufügt und dann ausgefallene Popups oder Sprechblasen-Popups oder was auch immer ausführen kann, wenn neue Nachrichten eingehen.

Das ist nicht allzu schwer und ich bin sicher, wenn Sie fragen: „Wie zeige ich ein Taskleistensymbol an?“ und „Wie erstelle ich Popup-Benachrichtigungen?“, erhalten Sie einige tolle Antworten :-)

Im Übrigen bin ich mir ziemlich sicher, dass Sie die Taskleiste in JS nicht flashen können (abgesehen von der Verwendung eines Warn-/Eingabedialogfelds), da dies stark Windows-spezifisch ist und JS so nicht wirklich funktioniert.Möglicherweise können Sie einige IE-spezifische Windows-ActiveX-Steuerelemente verwenden, aber dann zwingen Sie Ihren armen Benutzern den IE auf.Tu das nicht :-(

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top