gpt4 book ai didi

dom - 为什么 window.parent 自引用?

转载 作者:行者123 更新时间:2023-12-05 07:58:19 25 4
gpt4 key购买 nike

我从文档和几个相关的 StackOverflow 帖子了解到,如果没有其他父级,window.parent 将自引用,因此永远不会未定义。

关于为什么会这样,我似乎找不到合适的理由。JavaScript 确实有它的特质,但这个看起来很奇怪。

MSDN简单地说

If the current window doesn’t have a parent, i.e. it occupies the whole browser window, Parent returns the current window’s Window object.

MDN

If a window does not have a parent, its parent property is a reference to itself.

还有 W3 standard本身

The value of the parent attribute of a Window object MUST be the parent document's Window object or the document's Window object if there is no parent document

我还没有看到其他语言有这样的行为,这种自引用设计的原因是什么?当您点击窗口中最顶层的元素时,“null”或“undefined”不会导致更明显的情况吗?

那么,为什么?

最佳答案

在使用 iframe 时,开发人员通常会自动执行在窗口中导航的流程。虽然其核心算法将包含相同的基本逻辑,但概念方法会有所不同。

与以父子方式工作不同,有时开发人员会以这样一种方式设计系统,使其看起来不寻找父对象,而只是寻找要使用的正确窗口。控制(不一定持有)代码当前运行区域的那个。

在这种方法的情况下,程序在询问它对“正确”窗口的引用时返回“false”或“undefined”在概念上很奇怪,因为必须有一个。

例如,Bob 正在编程:

鲍勃:我嵌入了一个 iframe!好吧,让我试试包含我整个 iframe 的 window(不是 iframe 本身的 window)

鲍勃:什么?无效的?但我不明白,我的 iframe 已启动并正在运行,怎么没有任何窗口可以控制它?

我只是说 window.parent 可能 并不意味着从字面上严格地从 DOM 中获取父元素(比如 .parentElement 确实如此),但更像是指向绝对包装不仅您的脚本,而且在较低级别包装它的所有其他内容的窗口。

在最顶层的窗口(您的脚本正在执行的位置)的情况下,该语句可能会返回相同的窗口,因为没有比它更重要的其他窗口,它只是在查看时成为“正确的”对于高级容器。

我希望我说得有道理。

关于dom - 为什么 window.parent 自引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25189854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com