6 Stimmen

Ist es möglich, ein Browser-Fenster mit Javascript zu flashen?

Wie viele Programme Blitzlicht ihr Fenster zum Taskleiste / Dock um den Benutzer darauf hinzuweisen, zum Programm zu wechseln,

Ist es möglich, die Browser Fenster mit Javascript? (Auch reine FireFox-Skripte sind willkommen)

Dies ist nützlich für webbasierte Chat-/Forum-/Gemeinschaftssoftware, bei der es eine Vielzahl von Echtzeit Aktivität.

4voto

Hexagon Theory Punkte 40723

Zum jetzigen Zeitpunkt scheint es, als ob nur das Auftauchen eines Warndialogs ausreicht... das scheint mir ein bisschen zu aufdringlich zu sein, vor allem in Anbetracht der Verwendung, die Sie versuchen, es zu nutzen. Anstatt es blinken zu lassen, könnten Sie document.title ändern, um die Aufmerksamkeit des Benutzers zu erregen, indem Sie dem Namen der Website ein Signal voranstellen (vielleicht die Zeichenkette "NEW!") und dann ein Intervall verwenden, um es ständig in "" zu ändern, was dann eine nette kleine "blinkende" Illusion erzeugen würde.

Ein einfaches Beispiel:

<html>
<head>
<title>Chat System</title>
<script>
var timer, old_t = document.title, blink_amount = 5, cur_b = 0;
function notify()
 {
cur_b = 0;
timer = setInterval(function()
 {
if (cur_b < blink_amount * 2)
 {
cur_b++;
document.title = (document.title.indexOf('NEW! ') != -1) ? old_t : 'NEW! ' + old_t;
 }
else
 {
clearInterval(timer);
 }
 }, 600);
 }

notify();

// From here, it's just a matter of calling the
// notify() function whenever you detect a new message.
</script>
</head>
<body>
</body>
</html>

4voto

fearphage Punkte 16530

@Hexagon Theory: Warum sollten Sie jemals das gesamte Kopfelement neu schreiben, nur um den Wert eines Elements im Kopf zu ändern? Ihre Lösung ist auf mehreren Ebenen furchtbar ineffizient.

<html>
<head>
<link rel="icon" href="on.png" type="image/png" id="changeMe" />
<script type="text/javascript" src="flash.js"></script>
</head>
<body>
</body>
</html>

flash.js:

function Flasher(speed) {
  var elem = document.getElementById('changeMe');

  this.timer = setTimeout(function() {
    elem.href = elem.href ==  'on.png' ? 'off.png' : 'on.png';
  }, speed);

  this.stop = function() { clearTimeout(this.timer); }
}

/* sample usage
 *
 * var flasher = new Flasher(1000);
 * flasher.stop();
 */

Es musste nicht unbedingt eine Klasse sein, aber es half, den globalen Namespace sauber zu halten. Das ist ungetestet, aber wenn das einfache Ändern der href aus irgendeinem Grund nicht funktioniert, klonen Sie den Link-Knoten, ändern Sie die href und ersetzen Sie den alten Link durch den geklonten.

2voto

Hexagon Theory Punkte 40723

Hey, ich habe gerade eine weitere interessante Lösung für diese Frage gefunden. Warum nicht wirklich die Aufmerksamkeit des Nutzers erregen, indem das Symbol in seinem Browser aufleuchtet? Sie könnten zum Beispiel zwei Icons erstellen ( ein.png y aus.png in meinem Beispiel unten) und tauschen Sie sie immer wieder aus, um die Aufmerksamkeit des Nutzers zu erregen. Das Folgende ist eine einfache Implementierung; bedenken Sie bitte, dass Sie sera Dieses Skript muss aus der Ferne referenziert oder in den Text der Seite eingefügt werden, da es eine Methode verwendet, die wiederholt Ersetzt den Inhalt der <head> Tag. Probieren Sie es trotzdem aus; ich mag die Einfachheit der Sache.

Seite.html:

<html>
<head>
<link rel="icon" href="on.png" type="image/png" />
<script type="text/javascript" src="flash.js"></script>
</head>
<body>
</body>
</html>

flash.js:

var timer, speed = 175;
function flash()
 {
head_html = document.getElementsByTagName('head')[0].innerHTML;
if (head_html.indexOf('href="on.png"') != -1)
document.getElementsByTagName('head')[0].innerHTML = head_html.replace('on.png', 'off.png');
else
document.getElementsByTagName('head')[0].innerHTML = head_html.replace('off.png', 'on.png');
timer = setTimeout('flash()', speed);
 }

function kill_flash() {clearTimeout(timer);}

flash();

1voto

Robin Rodricks Punkte 104651

Ich habe gerade entdeckt window.getAttention() für Firefox, aber es funktioniert nur, wenn ein Addon es aufruft.

  • Windows blinkt die Taskleistenschaltfläche für das Fenster
  • Linux Einige Fenstermanager lassen die Schaltfläche in der Taskleiste aufleuchten, andere fokussieren das Fenster sofort.
  • Macintosh blinkt das Symbol in der oberen rechten Ecke des Desktops

0voto

Steven Robbins Punkte 26083

Window.Focus() sollte es unter Windows tun, bei anderen Plattformen bin ich mir nicht sicher. Sie könnten feststellen, dass es das Fenster in den Vordergrund bringt, wenn es minimiert ist, obwohl, was sehr ärgerlich wäre :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X