使浏览器窗口在任务栏中闪烁
如何使用JavaScript在任务栏中使用户的浏览器闪烁/闪烁/突出显示?例如,如果我每10秒发出一次AJAX请求以查看用户在服务器上是否有任何新消息,我希望用户立即知道它,即使他当时正在使用其他应用程序。
编辑:这些用户确实希望在收到新消息时分心。
解决方案
回答
我能想到的唯一方法是在收到消息时执行类似alert('you have a new message')的操作。如果将窗口最小化,这将使任务栏闪烁,但也会打开我们可能不需要的对话框。
回答
为什么不采用GMail使用的方法,并在页面标题中显示邮件数?
有时,用户不希望在收到新消息时分心。
回答
These users do want to be distracted when a new message arrives.
听起来我们正在为公司内部项目编写应用程序。
我们可能需要研究在.net中编写一个小的Windows应用程序,该应用程序会添加通知图标,然后在收到新消息时可以执行奇特的弹出窗口或者气球弹出窗口等操作。
这并不太难,而且我敢肯定,如果我们问"如何显示托盘图标"和"如何弹出通知",我们会得到一些很好的答案:-)
作为记录,我非常确定(除了使用警报/提示对话框外)我们不能在JS中刷新任务栏,因为这在很大程度上是Windows特定的,而JS确实不能那样工作。我们也许可以使用某些特定于IE的Windows ActiveX控件,但随后会给可怜的用户带来IE。不要那样做:-(
回答
我们可以使用每条新消息更改网页标题,以提醒用户。我是为浏览器聊天客户端执行此操作的,大多数用户认为它运行良好。
document.title = "[user] hello world";
回答
我对"用户界面"的回答是:我们确定用户希望其浏览器闪烁,还是认为这正是他们想要的?如果我是使用软件的人,那么我知道如果这些警报发生得很频繁并且妨碍了我,我会感到烦恼。
如果我们确定要这样做,请使用javascript警报框。这就是Google日历用于事件提醒的功能,他们可能对此有所考虑。
网页确实不是需要知道警报的最佳媒介。如果我们按照" ZOMG,则服务器已关闭!"的思路进行设计。警报,自动发送电子邮件或者SMS消息给合适的人可能会成功。
回答
我们可能要尝试window.focus(),但如果屏幕切换时可能会很烦人
回答
这不会使任务栏按钮以改变颜色的方式闪烁,但是标题将一直闪烁,直到他们移动鼠标为止。这应该跨平台工作,即使他们只是将其放在其他选项卡中也是如此。
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上使用针对Windows javascript API的咆哮来做到这一点:
http://ajaxian.com/archives/growls-for-windows-and-a-web-notification-api
用户将不得不安装咆哮声。
最终,这将以NotificationAPI的形式成为Google齿轮的一部分:
http://code.google.com/p/gears/wiki/NotificationAPI
因此,我建议暂时使用咆哮声方法,如果可能的话,请使用窗口标题更新,并已尝试在最终可用时尝试使用Gears Notification API。
回答
AFAIK,没有一致性的好方法。我正在编写一个IE仅基于Web的IM客户端。我们最终使用了window.focus(),它在大多数时候都有效。有时,它实际上会导致窗口从前台应用程序中窃取焦点,这确实很烦人。
回答
我制作了一个jQuery插件,目的是使浏览器标题栏中的通知消息闪烁。我们可以指定不同的选项,例如闪烁间隔,持续时间,是否应在窗口/选项卡聚焦时停止闪烁等。该插件可在Firefox,Chrome,Safari,IE6,IE7和IE8中使用。
这是有关如何使用它的示例:
$.titleAlert("New mail!", { requireBlur:true, stopOnFocus:true, interval:600 });
如果我们不使用jQuery,则可能仍要查看源代码(如果要完全支持所有主流浏览器,则在闪烁标题时需要解决一些古怪的错误和边缘情况)。