浏览器标签页和窗口的区别

10
在Web浏览器中,每个窗口都有自己的JavaScript环境和全局对象。但是,似乎在同一窗口中打开一个新选项卡也会创建一个不同的全局对象。这是否真的是正确的?打开新标签页与打开新窗口之间的主要区别是什么?

1
你在谈论什么全局对象?你能给我们展示一下你所想的不同全局对象的代码示例吗? - Bhojendra Rauniyar
1
作为全局对象,我指的是代表窗口的对象。 - koninos
2
一个标签页只是浏览器运行的另一个进程,本质上它们是相同的,一个标签页可以在一个窗口中与许多其他标签一起显示,而一个窗口则是一个窗口。试着将一个标签页从浏览器窗口中拖出来,它会打开另一个窗口,这表明一个标签页在这方面与一个窗口是相同的。 - Clemens Himmer
2个回答

9
唯一的区别在于窗口向用户呈现的方式。每个标签页/窗口都有完全独立的DOM(文档对象模型)和JavaScript环境。
大多数浏览器会在选项卡和新窗口之间共享Cookies和会话。有些浏览器有一个“隐身”模式,可以防止隐身模式窗口与普通模式窗口之间共享会话。

2
是的,如果您在新窗口或标签中打开相同的页面,则全局对象或变量将被重新创建。如果您对选项卡A或窗口B进行了一些更改或修改,并且这些更改以某种方式改变了全局对象或变量的值,则除非您将其显式保存到服务器并从那里重新获取它,否则不会反映在选项卡C或窗口D中。您无法保留全局对象的值,它们将被重新创建。请注意,会话变量或对象将始终相同。
选项卡和窗口之间的区别
选项卡与窗口基本相同。一个窗口可以包含几个选项卡,所有会话数据和Cookie都在所有选项卡和打开的窗口之间共享。最好打开许多选项卡而不是打开几个窗口,因为太多的窗口会变得太杂乱,难以处理。
隐身模式浏览的窗口不与常规窗口或任何常规窗口的选项卡共享任何信息,但隐身窗口中的所有选项卡共享类似的会话数据或Cookie。隐身窗口的新实例也将作为隐身窗口中的新选项卡,共享该隐身窗口的会话数据或Cookie。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接