Javascript 使浏览器窗口在任务栏中闪烁
如何使用JavaScript使用户的浏览器在任务栏中闪烁/闪烁/突出显示?例如,如果我每10秒发出一个AJAX请求,以查看用户在服务器上是否有任何新消息,我希望用户立即知道,即使他当时正在使用另一个应用程序Javascript 使浏览器窗口在任务栏中闪烁,javascript,browser,Javascript,Browser,如何使用JavaScript使用户的浏览器在任务栏中闪烁/闪烁/突出显示?例如,如果我每10秒发出一个AJAX请求,以查看用户在服务器上是否有任何新消息,我希望用户立即知道,即使他当时正在使用另一个应用程序 编辑:当新消息到达时,这些用户确实希望分心。我能想到的唯一方法是在收到消息时执行类似“提醒”(“您有一条新消息”)的操作。如果窗口最小化,这将使任务栏闪烁,但它也会打开一个对话框,您可能不想看到这个对话框。为什么不采用GMail使用的方法,在页面标题中显示消息的数量 有时,用户不想在收到新消
编辑:当新消息到达时,这些用户确实希望分心。我能想到的唯一方法是在收到消息时执行类似“提醒”(“您有一条新消息”)的操作。如果窗口最小化,这将使任务栏闪烁,但它也会打开一个对话框,您可能不想看到这个对话框。为什么不采用GMail使用的方法,在页面标题中显示消息的数量 有时,用户不想在收到新消息时分心 当新消息到达时,这些用户确实希望分心 听起来你在为公司内部项目编写应用程序 您可能想研究在.net中编写一个小的windows应用程序,该应用程序添加一个通知图标,然后在收到新消息时,可以执行奇特的弹出窗口或气球弹出窗口或其他任何操作 这并不太难,我相信如果你问“我如何显示托盘图标”和“我如何进行弹出通知”,你会得到一些很好的答案:-)
作为记录,我非常确定(除了使用提醒/提示对话框)你不能在JS中刷新任务栏,因为这是非常特定于windows的,而JS确实不是这样工作的。您可能能够使用某些特定于IE的windows activex控件,但随后您将IE强加给您的可怜用户。不要这样做:-(你可以用每一条新消息更改网页的标题,以提醒用户。我这样做是为了一个浏览器聊天客户端,大多数用户认为它工作得足够好
document.title = "[user] hello world";
我的“用户界面”回答是:你确定你的用户希望他们的浏览器闪烁,还是你认为这是他们想要的?如果我是使用你的软件的人,我知道如果这些警报经常发生并妨碍我,我会很恼火
如果你确定你想这样做,可以使用javascript提醒框。谷歌日历就是这样做的,他们可能会考虑一下
网页并不是“需要知道”警报的最佳媒介。如果您是按照“僵尸,服务器停机!”的思路设计的,那么向合适的人发送警报、自动电子邮件或短信可能会起到作用。您可能想试试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;
}
};
}());
更新:您可能想看看如何使用。假定您可以在windows上使用growl for windows javascript API实现这一点: 不过,您的用户必须安装growl 最终,它将以NotificationAPI的形式成为google gears的一部分:
因此,我建议现在使用咆哮的方法,如果可能的话,回到窗口标题更新,并且已经在尝试使用Gears通知API,以便在它最终可用时使用。AFAIK,在一致性方面没有好的方法。我正在编写一个仅基于IE的IM客户端。我们最终使用了window.focus(),这在大多数情况下都能正常工作。有时,它实际上会导致窗口从前台应用程序中窃取焦点,这可能真的很烦人。我在浏览器标题栏中设置了一个选项,用于闪烁通知消息。您可以指定不同的选项,如闪烁间隔、持续时间,如果获胜时闪烁应该停止dow/tab获得关注,等等。该插件在Firefox、Chrome、Safari、IE6、IE7和IE8中工作 下面是一个关于如何使用它的示例:
$.titleAlert("New mail!", {
requireBlur:true,
stopOnFocus:true,
interval:600
});
如果您不使用jQuery,您可能仍然希望查看(如果您想完全支持所有主要浏览器,在执行标题闪烁时,您需要解决一些奇怪的错误和边缘情况)。使浏览器窗口在任务栏中闪烁
不可能!!我无法按照IE 8中的描述使其工作。它会一直闪烁标题。我没有使用onmousemove,而是使用onfocus和onblur来跟踪窗口何时处于焦点位置,并停止onfocus函数中的闪烁。因此,当页面加载时,我注册了onfocus和onblur函数来切换一个布尔“聚焦”变量。我有另一个布尔值来跟踪闪烁何时开始。在onfocus中,如果闪烁已开始,我将停止闪烁。这在Chrome中似乎不起作用……我认为Chrome不理解空字符串是什么。如果我使用连字符作为“空白”消息,它工作正常。如果多次触发警报,这似乎会叠加。这会导致间隔越来越快,然后当删除时,它只删除一个间隔。在Windows 7中,更改标题不会在TaskBar中闪烁/闪烁。如何传递参数(消息)奇怪的是,yahoo mail做到了这一点,我想知道在当前的浏览器中,每个浏览器的行为都不一样,没有一个会让任务栏图标闪烁(测试了Win8-IE10、Chrome、Firefox)这并不是问题的答案。若要评论或要求作者澄清,请在其帖子下方留下评论。@secretformula是否真的有必要挖掘5年前的帖子并将其标记为低质量?@Taifun it出现在VLQF队列中,所以是的。Meta已经讨论过这一点too@secretformula,这实际上提供了这是一个很好的答案:使用JavaScript
警报。不管错与否,这在我看来都不是一个答案,但历史表明有两位版主已经拒绝了NAA标志,所以我在这里遵循共识。
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
function blinkTab() {
const browserTitle = document.title;
let timeoutId;
let message = 'My New Title';
const stopBlinking = () => {
document.title = browserTitle;
clearInterval(timeoutId);
};
const startBlinking = () => {
document.title = document.title === message ? browserTitle : message;
};
function registerEvents() {
window.addEventListener("focus", function(event) {
stopBlinking();
});
window.addEventListener("blur", function(event) {
const timeoutId = setInterval(startBlinking, 500);
});
};
registerEvents();
};
blinkTab();
via Javascript