Ajax 一个github选项卡如何知道我何时在另一个上注销
复制:Ajax 一个github选项卡如何知道我何时在另一个上注销,ajax,session,websocket,server-sent-events,Ajax,Session,Websocket,Server Sent Events,复制: 打开两个都已登录的github选项卡 从一个选项卡中注销 在第二个选项卡的顶部,您几乎会立即收到您在另一个选项卡上注销的通知 我一直在想这是怎么回事。由于通知几乎是即时的,我考虑了3种可能性: 每个选项卡都按计划发出XHR/AJAX请求,以检查与服务器的会话有效性(或使用长轮询) 每个选项卡向服务器发送的事件注册一个事件侦听器,并在注销时从服务器接收通知 每个选项卡都有一个到服务器的websocket连接,并接收类似的通知 这些技术仅供参考。但我很困惑,因为当我打开web浏览器(Fire
顺便说一句,通知的作用方向也是相反的。如果您有两个选项卡已注销,并且您登录其中一个选项卡,则会立即在您登录的另一个选项卡上弹出通知。发生了什么事?Github使用本地存储实现这一技巧。它使用带有“登录”键的条目。此密钥为true或false,并在用户每次登录/注销时设置。每个选项卡都会不断检查本地存储(据我所知,没有本地存储修改事件)。还有一个澄清:实际上有本地存储修改事件,GitHub很可能会使用它。有趣;我没想到。如果我手动(使用Firefox中的开发工具)将本地存储值从“true”更改为“false”,则不会出现弹出窗口。为什么呢?可能是Firefox在更改本地存储时没有将适当的事件触发到焦点选项卡。或者GitHub使用一些专用于Firefox的机制。不管怎样,如果你打开两个或更多的标签,效果很好。@AntonOnipko谢谢你回答我的问题。我可以确认,如果我在Firefox中关闭本地存储(通过在
about:config
中禁用dom.Storage.enabled
),Github在我登录/注销另一个选项卡时不再发出通知。