当我登录到我的大学的“学习系统”时,发现无法用相同网站在新的标签页中打开。这时,该网站会显示以下信息:
这网站是如何知道我在电脑上打开了哪些选项卡?据我所知,前端代码不应该能访问我的私人浏览器信息。这个网站可能使用哪些可访问的信息来确定我是否已经打开另一个选项卡呢?
我正在使用私人电脑访问该网站,并且被访问的网站不在本地网络中,是通过互联网访问的。因此,没有内部监控软件可能导致这种情况。我正在使用 Google Chrome 24 Beta for Mac。
当我登录到我的大学的“学习系统”时,发现无法用相同网站在新的标签页中打开。这时,该网站会显示以下信息:
这网站是如何知道我在电脑上打开了哪些选项卡?据我所知,前端代码不应该能访问我的私人浏览器信息。这个网站可能使用哪些可访问的信息来确定我是否已经打开另一个选项卡呢?
我正在使用私人电脑访问该网站,并且被访问的网站不在本地网络中,是通过互联网访问的。因此,没有内部监控软件可能导致这种情况。我正在使用 Google Chrome 24 Beta for Mac。
网站知道你打开了另一个标签页的另一种方式是通过广播通道。简单来说,广播通道是窗口、标签页等之间进行通信的一种手段(如果我理解有误请指正)。以下是一个简单的实现:
//Channel to post and receive messages from
const bc = new BroadcastChannel("Check-tabs");
//On message receive
bc.onmessage = (event) => {
if (event.data === `First tab?`) {
//Post that there is already a tab open
bc.postMessage(`Tab already open`);
}
//Check if a tab is open
if (event.data === `Tab already open`) {
alert(`Another tab is already open.`);
}
//Posts message to check whether another tab is open
bc.postMessage(`First tab?`);