2011-05-08 24 views
0

我在网页上有一个聊天脚本。 现在,当有人添加消息时,我想通知其他拥有打开的页面/选项卡但未激活的人员,以接收新消息的通知。
例如,我想将页面标题从“聊天”更改为“新消息 - 聊天”。 我认为这是'Facebook Chat'所做的。Page title在多个浏览器中的通知

但是当我使用: document.title =“New Message”; 它仅在提交消息的用户的浏览器中发生变化。不在其他浏览器上。

我该如何做到这一点?

+0

你是否在收到邮件时运行它?真的需要代码。 – Ben 2011-05-08 00:22:08

回答

0

你可以给你的标题一个id:

document.getElementById("title").innerHTML ="new Title"; 

或者干脆

document.getElementsByTagName('title')[0].innerHTML = "New Title"; 

无论哪种方式,它会工作

UPDATE:

几遍后,我做了一个我看错了。

当新消息你的脚本检查,如果有新的消息,你应该更改标题也,或进行额外的测试,看看是否有用户主动或不改变标题之前

0

要做到Facebook聊天所做的事情,它会以接近实时的方式通知每个用户的更新,您需要使用“推送”技术或模拟它的东西。可能的技术是轮询(每个客户端定期检查服务器以检查更新),Comet(长轮询或与服务器的流式连接),或更新,更真实地“推”(但支持较少)方法,如服务器发送的事件或WebSocket API

轮询不是最有效的技术,但将是最简单的实现。您可以从编写接受时间戳的服务器端处理程序开始,并返回自该时间戳以来的更新计数。客户端Javascript以一定间隔调用该处理程序,传递最后一次检查的时间戳,并处理响应(如果发现最近更新,则更新标题栏)。

0

Listen document.title = "New Message";是一个绝对完美的代码,但是您已经将其放在了这样一个区域,即当一个人输入消息时,它会在他的页面上执行,这是错误的。当用户等待回复时(您与其他用户聊天时),您应该添加这段代码,当AJAX(或您用于检查的任何其他方法)收到输入消息的人的回复。

基本上我说的是这段代码片段被放置在错误的地方。当一个人收到聊天消息时,您必须放置此代码片段,而不是将其发送给其他人。

然后在身体上,当onmousemove将标题改回原来的标题时,您可以进行活动!所以这就是Facebook Chat的工作原理。

你的错误是这个地方,你把你的代码块,没有别的!

希望这会有所帮助,干杯!