【问题标题】:How to normalize the ajax call for multiple tabs?如何规范多个选项卡的 ajax 调用?
【发布时间】:2014-12-09 06:02:42
【问题描述】:

我创建了一个应用程序,在每个页面的标题处加载通知,使用 ajax 调用的消息。

我重复了这个动作,相差半分钟。

所以每半分钟就会发起对服务器的新请求。

我发现如果用户在多个选项卡中打开应用程序,那么每个选项卡都会向服务器发出请求以进行新的通知/消息检查。

所以每个新标签都会创建 1 个额外的请求。

如何使条件正常化?

我的意思是说 --- 我只想向服务器发出单个请求以进行通知/消息检查,全心全意的用户打开多个选项卡,并更新每个打开的应用程序选项卡中的数据。

【问题讨论】:

  • 让用户有机会在您的应用中打开新标签,然后您可以在窗口之间使用 postMessage
  • @charlietfl 你能详细解释一下吗?
  • 如果使用window.open 打开新标签页,您可以在每个窗口中访问另一个窗口
  • 不,不是。有时浏览器会阻止此脚本。

标签: javascript jquery ajax browser


【解决方案1】:

也许您可以通过焦点模糊检查哪个选项卡处于活动状态,并且仅从活动选项卡发送请求并将结果存储在本地存储中。并将 EventListener 添加到 localstorage 以便您可以更新其他选项卡。

【讨论】:

【解决方案2】:

也许对于每个参数,您可以将其值和时间戳存储在 cookie 中,并在发送请求之前对其进行检查。您也可以使用本地存储来执行此操作。 http://www.html5rocks.com/en/features/storage

【讨论】:

  • 从逻辑上讲,我认为这会起作用。但是,如果您的互联网连接速度很慢,那么在这种情况下,请求和响应需要超过一分钟,我认为这不会奏效。或者任何情况下,如果您的请求延迟,同样的问题可能会出现。
  • 在这种情况下,第一个请求服务器的人可以在 cookie 中设置一个标志,以阻止其他选项卡执行相同操作。他们将在几秒钟后再次检查,一次又一次,直到第一个选项卡得到答案并编辑了 cookie。这对你有用吗? AFAIK,没有比 cookie 在选项卡之间交换消息更好的方法了。
  • 是的,您是对的,因为我们在本地浏览器中没有任何数据交换选项。但我需要为请求添加约束。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-23
  • 1970-01-01
  • 1970-01-01
  • 2022-11-22
  • 2019-08-04
  • 1970-01-01
相关资源
最近更新 更多