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

IT技术 javascript browser
2021-01-13 16:26:20

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

编辑:这些用户确实希望在收到新消息时分心。

6个回答

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

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 7 中,更改标题不会在任务栏中闪烁/闪烁
2021-03-14 16:26:20
如果多次触发警报,这似乎会叠加。这导致间隔越来越快,然后当您删除时,它只会删除一个间隔。
2021-03-18 16:26:20
你如何将参数(消息)传递给这个?
2021-03-20 16:26:20
这在 Chrome 中似乎不起作用......我认为 Chrome 不明白空字符串是什么。如果我使用连字符作为“空白”消息,它工作正常。
2021-03-29 16:26:20
我无法像 IE 8 中描述的那样让它工作。它永远闪烁标题。我没有使用 onmousemove,而是使用 onfocus 和 onblur 来跟踪窗口何时处于焦点状态,并在 onfocus 函数中停止闪烁。因此,当页面加载时,我注册 onfocus 和 onblur 函数来切换布尔“聚焦”变量。我有另一个布尔值来跟踪闪烁何时开始。在对焦时,如果闪烁已经开始,我会停止它。
2021-04-02 16:26:20

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

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

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

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

据说您可以在 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 消息可能会奏效。

@secretformula 真的有必要挖出 5 年前的帖子并将其标记为低质量吗?
2021-03-17 16:26:20
@secretformula,这实际上确实为这个问题提供了一个很好的答案:使用 JavaScript alert
2021-03-18 16:26:20
@Taifun 它出现在 VLQF 队列中,所以是的。Meta 也讨论过这个
2021-03-27 16:26:20
这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论。
2021-04-01 16:26:20
不管错与否,这对我来说似乎不是一个答案,但历史表明 2 位版主已经拒绝了 NAA 标志,所以我在这里遵循共识。
2021-04-07 16:26:20