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

标签 javascript redirect window language-lawyer

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

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

最内层的页面(具有突破代码的页面)将通过 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/

相关文章:

http - 如何使用 glassfish v4 将 http 重定向到 https

linux - 如何获取重定向 UDP 消息的原始目标端口?

cakephp - CakePHP 中的重定向和渲染有什么区别?

javascript - 关闭子窗口,重定向父窗口

java - 纹理未正确加载 slick java

javascript - http ://www. beautyoftheweb.com效果如何?

javascript - 使用 javascript 在 qualtrics 中控制 css 横幅的呈现时间

javascript - Node.js 中如何首先执行所有控制台日志?

c# - 计算 Windows 10 上第 3 方窗口的标题栏按钮的总宽度

javascript - Dart 中的 JSONP 回调