如何使用 JavaScript 在任务栏中使用户的浏览器闪烁/闪烁/突出显示?例如,如果我每 10 秒发出一次 AJAX 请求以查看用户在服务器上是否有任何新消息,我希望用户立即知道,即使他当时正在使用另一个应用程序。
编辑:这些用户确实希望在收到新消息时分心。
如何使用 JavaScript 在任务栏中使用户的浏览器闪烁/闪烁/突出显示?例如,如果我每 10 秒发出一次 AJAX 请求以查看用户在服务器上是否有任何新消息,我希望用户立即知道,即使他当时正在使用另一个应用程序。
编辑:这些用户确实希望在收到新消息时分心。
这不会使任务栏按钮以不断变化的颜色闪烁,但标题会时不时地闪烁,直到他们移动鼠标。这应该跨平台工作,即使他们只是在不同的选项卡中。
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;
}
};
}());
更新:您可能需要考虑使用HTML5 通知。
据说您可以在 windows 上使用 grungel for windows javascript API 执行此操作:
http://ajaxian.com/archives/growls-for-windows-and-a-web-notification-api
不过,您的用户将不得不安装咆哮。
最终,这将以 NotificationAPI 的形式成为 google gears 的一部分:
http://code.google.com/p/gears/wiki/NotificationAPI
所以我建议现在使用咆哮方法,如果可能的话回退到窗口标题更新,并且已经在尝试使用 Gears 通知 API 进行工程设计,直到它最终可用。
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
我的“用户界面”回应是:您确定您的用户希望他们的浏览器闪烁,还是您认为这就是他们想要的?如果我是使用你们软件的人,我知道如果这些警报经常发生并妨碍我,我会很生气。
如果您确定要这样做,请使用 javascript 警报框。这就是 Google 日历为事件提醒所做的事情,他们可能对此有所考虑。
网页真的不是需要知道警报的最佳媒介。如果您正在设计类似于“ZOMG,服务器已关闭!”的内容。向合适的人发送警报、自动发送电子邮件或 SMS 消息可能会奏效。