使任务栏中的浏览器窗口闪烁

eri*_*rik 102 javascript browser

如何使用JavaScript在任务栏中使用户的浏览器闪烁/闪烁/突出显示?例如,如果我每10秒发出一次AJAX请求以查看用户是否在服务器上有任何新消息,我希望用户立即知道它,即使他当时正在使用其他应用程序.

编辑:这些用户确实希望在收到新邮件时分心.

nic*_*ckf 85

这不会使任务栏按钮闪烁改变颜色,但标题将闪烁,直到他们移动鼠标.这应该跨平台工作,即使他们只是在不同的选项卡中.

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;
        }
    };
}());
Run Code Online (Sandbox Code Playgroud)

更新:您可能希望查看使用HTML5通知.

  • 这似乎不适用于Chrome ...我不认为Chrome知道空字符串是什么.如果我使用连字符作为"空白"消息,它可以正常工作. (4认同)
  • 在Windows 7中,更改标题不会在任务栏中闪烁/闪烁 (2认同)

hey*_*man 54

我已经制作了一个jQuery插件,用于在浏览器标题栏中闪烁通知消息.您可以指定不同的选项,如闪烁间隔,持续时间,如果窗口/选项卡聚焦时闪烁应该停止等等.该插件适用于Firefox,Chrome,Safari,IE6,IE7和IE8.

以下是如何使用它的示例:

$.titleAlert("New mail!", {
    requireBlur:true,
    stopOnFocus:true,
    interval:600
});
Run Code Online (Sandbox Code Playgroud)

如果您不使用jQuery,您可能仍然希望查看源代码(如果您想完全支持所有主流浏览器,那么在执行标题闪烁时需要解决一些奇怪的错误和边缘情况).


Joe*_*hts 6

据说你可以在Windows上使用增强版的windows javascript API执行此操作:

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

您的用户必须安装咆哮.

最终,这将成为谷歌齿轮的一部分,以NotificationAPI的形式:

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

所以我建议现在使用growl方法,如果可能的话,回到窗口标题更新,并且已经尝试使用Gears Notification API,以便最终变得可用.


小智 6

                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 
Run Code Online (Sandbox Code Playgroud)


Rud*_*udi 5

我的“用户界面”响应是:您确定用户希望其浏览器闪烁,还是您认为这就是他们想要的?如果我是使用您软件的人,那么我知道如果这些警报发生得很频繁并且妨碍了我,我会感到烦恼。

如果您确定要这样做,请使用javascript警报框。这就是Google日历用于事件提醒的功能,他们可能对此有所考虑。

网页确实不是需要知道警报的最佳媒介。如果您按照“ ZOMG,则服务器已关闭!”的思路进行设计。警报,自动发送电子邮件或SMS消息给合适的人可能会成功。

  • 这不能为问题提供答案。要批评或要求作者澄清,请在其帖子下方发表评论。 (10认同)
  • @secretformula 真的有必要挖出 5 年前的帖子并将其标记为低质量吗? (2认同)
  • @Taifun它出现在VLQF队列中,所以是的。Meta也讨论了这一点 (2认同)