gpt4 book ai didi

javascript - 默认的 `window.top` 是否可以作为引用无效?

转载 作者:行者123 更新时间:2023-11-29 19:31:26 29 4
gpt4 key购买 nike

我想将用户重定向到外部页面并同时跳出框架集。

最外层的框架集很可能与执行重定向的页面位于同一域中,但也有可能跨越多个域。在开发中,最外层的框架集甚至可能根本不存在。理想情况下,我想涵盖所有这些情况。

最内层的页面(具有突破代码的页面)将通过 HTTPS 提供服务。目标 URL 可以是 HTTP 或 HTTPS。重定向失败是可以接受的(有一个回退链接“单击此处继续”以涵盖该场景),但重定向应该在大多数情况下都有效。特别是出于这个问题的目的,我不希望它过于依赖浏览器。

Web 应用程序本身是 ASP.NET。

由于框架集,我不能简单地使用 HTTP 重定向。

到目前为止 我有这段 Javascript 代码,它在子类 Page 中注册为启动脚本,其中 ... 代表重定向目标 URL:

((window.top == null) ? (window) : (window.top)).location = '...';

困扰我的是 MDN 对 window.top 的看法和 window.parent , 分别。 特别是,window.parent 的文档明确说明

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

这意味着我可以断言 window.parent != null。但是 window.top 的值没有任何相似之处。

就我的问题而言,您可以假设这些都没有被重新分配。

所有这些都引出了一个实际问题:window.top 是否提供类似于 window.parent 的保证?(我我有点担心条件表达式。在我目前有限的测试中它有效,但这并不能证明它正确。)

据我所知,至少 MDN 并没有肯定这两种方式。

最佳答案

HTML5 规范定义了 window.top像这样:

The top IDL attribute on the Window object of a Document in a browsing context b must return the WindowProxy object of its top-level browsing context (which would be its own WindowProxy object if it was a top-level browsing context itself), if it has one, or its own WindowProxy object otherwise (e.g. if it was a detached nested browsing context).

因此 top 属性必须始终引用一个窗口。该规范还将 top 定义为 readonly,因此无法将其更改为指向其他内容(如果规范实现正确)。

如果 window.top == null 就很糟糕了!

关于javascript - 默认的 `window.top` 是否可以作为引用无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27246759/

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