【发布时间】:2014-02-27 08:05:13
【问题描述】:
在我网站的每个页面上,我都使用 AJAX 来轮询服务器并检索消息列表。服务器维护一个消息列表和消息所针对的 SessionId(我在 ASP.NET 环境中,但我觉得这个问题适用于任何服务器端技术)。如果找到特定 SessionId 的消息,则将其返回到客户端脚本。我使用 JavaScript 库来创建通知(使用 noty,一个 Jquery 通知插件)。一旦返回特定消息,服务器就会丢弃该消息。
如果用户只为特定网站打开了一个选项卡/窗口,这很有效。但是,假设他们有两个打开并且他们做了一些导致生成警告消息的事情。我无法控制通知转到哪个选项卡,因此用户可能最终看不到警告消息。
是否有唯一标识浏览器选项卡的方法?然后我可以将它作为我的 AJAX 调用中的参数之一传递。
【问题讨论】:
-
window.MYID=Math.random(); ... doServerStuff(MYID, ...); ... if(response.id==MYID) ... 您可以使用 window.name 在刷新期间保留 ID。
-
@dandavis 这会持续多个请求吗?假设我在 Default.aspx 上设置了 window.MYID,然后用户导航到 MyAccount.aspx。 window.MYID 是否仍会被初始化为相同的值?
-
window.MYID 不会,但 window.name 会。如果可用,您也可以使用 sessionStorage。
-
您的意思是用户在其中一个浏览器选项卡中执行了不允许的操作,而您想在另一个浏览器选项卡中显示消息?
-
没有。我想要一个基于 AJAX 的消息系统,将消息发送回正确的选项卡。例如,用户在选项卡 X 上执行了一些不允许的操作,我想在选项卡 X 上显示一条消息。但我希望同一个系统也允许将用户重定向到另一个页面并仍然在选项卡 X 上显示消息,而不是选项卡是的。
标签: javascript asp.net browser