我正在开发一个聊天系统并得到一个我想问你的问题。
我不认为这是可能的,但由于我在某些网站上看到类似的行为,我想知道如何访问在其他标签中定义/修改的变量?我的意思是我不想将它发送到服务器。如何做像
这样的事情 var myvalue=getValueInAvailableTab(varName);
如果不可能,facebook如何知道聊天对话框是否已在另一个标签中关闭?他们是否在他们的服务器上发布此事件然后检索它?
对不起,我不是在偷窃行为,但这是解释我想要做的最好的例子。
答案 0 :(得分:2)
在大多数情况下,您的问题的答案是您无法在另一个标签中访问Javascript变量。但是,还有其他方法可以在选项卡之间传递数据:
window.parent
或window.opener
在没有服务器交互的情况下,您可以通过这些方式完成所需的工作。但是,我不确定Facebook使用什么方法。
答案 1 :(得分:0)
只要浏览器标签来自同一个域,您就可以通过保留对window.open(...)
的返回值的引用来跟踪它们:
var wins = {};
wins.someTab = window.open(...);
wins.someOtherTab = window.open(...);
然后访问该选项卡中的全局变量:
wins.someTab.someVar
从该子标签内部开始:
opener.wins.someOtherTab.anotherVar