在我最近参与的编程挑战中,我不得不使用window.name
属性来存储/操作数据。我发现,当您更改此属性时,它会在页面刷新时保留(尽管在打开具有相同URL的新页面时不会这样)。
我能找到的唯一信息是,这是已知的,甚至被某些框架用作数据存储,但我会对其原因感兴趣(因为为什么window.name持久?有历史原因吗?)以及如何(在页面更改和丢弃页面之间保留window.name
时有哪些规则?)。
显然,我的Google-fu还不足以找到这些问题的答案(在MDN页面上甚至没有提到它!)所以我希望也许你可以帮助我。
答案 0 :(得分:1)
我对它的理解是窗口对象在选项卡的整个生命周期中都是持久的,并且表示正在加载不同HTML文档的窗口。
每个选项卡都包含自己的window
对象,这就是为什么即使您导航到/从不同页面导航窗口对象是持久性的,而如果您在另一个选项卡上检查,window.name
将是不同的
打开不同的html页面时,大多数都不会覆盖window.name
属性,而且它是完全可选的。如果没有别的东西在操纵它,那将是你留下的。大多数页面只涉及操纵window.document
本身。
答案 1 :(得分:0)
命名窗口用作链接目标,用于:
<a href="example.html" target="some_page">some page</a>
链接将在新窗口中打开一次,如果在后续点击中仍然存在,则会在同一窗口中打开,窗口的名称就是它的目标。
window.open
的第二个参数也是一个窗口名称。
window.open('example.html', 'some_page');
您可以在浏览器中通过不相关的网站进行试用;在一个标签的控制台中,设置window.name = 'test';
,然后使用window.open('https://example.com/', 'test');
。 (您可能必须让它通过弹出窗口阻止程序。)不相关的选项卡应导航到https://example.com/。