1

我有一个用 PHP + MySQL + Javascript 编写的在线聊天室程序

我用来jQuery.post()chat.php. 这个 php 程序从 MySQL 读取数据并将echo其发送到页面上。

当有新消息进来时如何提醒用户?我只希望它在聊天室页面没有聚焦时发出警报。

顺便说一句,闪烁网页标题是提醒用户的好主意吗?

4

4 回答 4

0

要检查页面是否聚焦,您可以使用该document.hasFocus功能。true如果文档有焦点,则返回,false否则返回。

虽然 Opera 似乎不支持它,所以如果支持 Opera 对您很重要,您可以观察focusblur事件window以确定窗口是否处于焦点(这里是一个示例。)


关于“如何提醒用户”的话题,这完全由你决定。您可以按照正常方式进行操作,在您的标题前加上“ (x) ”,其中x是新消息的数量。您还可以使用 Flash 甚至更好的 JavaScript 音频 API 来提醒用户噪音:

var sound = new Audio('sound-file.wav');
sound.play();

不过,请务必严格自愿地保留音频反馈。


如果您想更加花哨,可以查看Chrome 桌面通知。每当有新消息到达时,任何运行 Chrome 的用户都可以收到桌面通知(与您收到 Skype 或 MSN 消息时收到的通知相同)。这是一个使用示例

于 2012-08-06T15:16:24.007 回答
0

您必须使用 HTML5 标签而不是使用 Javascript/JQuery 来控制它!

这对我有用: http ://css-tricks.com/play-sound-on-hover/

在 html 源代码中:

<audio id="chat_sound" controls>
    <source src="audio/notification.mp3" type="audio/mp3" preload="auto">
    <source src="audio/notification.ogg" type="audio/ogg" preload="auto">
    Your browser isn't invited for super fun audio time.
</audio>

在 JavaScript 中:

var sound_notification = $("#chat_sound")[0];

那么你可以使用这些调用:...``

sound_notification.pause();
sound_notification.play();

...

于 2013-03-15T08:53:53.950 回答
0

给每条消息一个唯一的 ID,例如每 5 秒轮询一次您的 chat.php,然后将客户端的最后一条消息 ID 与您从 chat.php 中获得的信息进行比较。

这很容易做到。

如果你想要一些更酷、更实时的解决方案,你应该看看 www.pubnub.com 或类似的服务。

于 2012-08-06T15:11:14.647 回答
0

您可以使用 facebook、skype 或其他著名的“聊天室”方法。

当您收到用户的新回复时,您有两种方法:

  • 你添加一个通知出现在窗口中(当在 windows 或 mac 中使用Skype时......)
  • 您想更改菜单中聊天按钮的颜色(和手电筒几秒钟)。

红色是侵略性的颜色,但这取决于您的网站颜色...

对于手电筒,只需几秒钟,否则用户会厌倦聊天系统......

对于网页设计最佳实践,这里有一篇非常好的文章......

于 2012-08-06T15:11:38.717 回答