在Web浏览器中,每个窗口都有自己的JavaScript环境和全局对象。但是,似乎在同一窗口中打开一个新选项卡也会创建一个不同的全局对象。这是否真的是正确的?打开新标签页与打开新窗口之间的主要区别是什么?
唯一的区别在于窗口向用户呈现的方式。每个标签页/窗口都有完全独立的DOM(文档对象模型)和JavaScript环境。大多数浏览器会在选项卡和新窗口之间共享Cookies和会话。有些浏览器有一个“隐身”模式,可以防止隐身模式窗口与普通模式窗口之间共享会话。
是的,如果您在新窗口或标签中打开相同的页面,则全局对象或变量将被重新创建。如果您对选项卡A或窗口B进行了一些更改或修改,并且这些更改以某种方式改变了全局对象或变量的值,则除非您将其显式保存到服务器并从那里重新获取它,否则不会反映在选项卡C或窗口D中。您无法保留全局对象的值,它们将被重新创建。请注意,会话变量或对象将始终相同。选项卡和窗口之间的区别选项卡与窗口基本相同。一个窗口可以包含几个选项卡,所有会话数据和Cookie都在所有选项卡和打开的窗口之间共享。最好打开许多选项卡而不是打开几个窗口,因为太多的窗口会变得太杂乱,难以处理。隐身模式浏览的窗口不与常规窗口或任何常规窗口的选项卡共享任何信息,但隐身窗口中的所有选项卡共享类似的会话数据或Cookie。隐身窗口的新实例也将作为隐身窗口中的新选项卡,共享该隐身窗口的会话数据或Cookie。