window.parent没有未定义?

时间:2013-12-24 08:05:26

标签: javascript

我有一个页面。没有Iframes:

enter image description here

我需要检查页面是否在Iframe中,所以我这样做了:

if (!window.parent) {...not in iframe...}

但似乎window.parent永远不会undefined并始终引用窗口(self===parent)

为什么?

窗口没有(!)父级。那为什么要定义?

NB

  • 我知道window.window.w....是有道理的。但我在谈论父母(!)

  • 我知道我可以查看这个条件:

if (window.self===window.parent)...

但我的问题仍然存在。

2 个答案:

答案 0 :(得分:6)

来自MDN

  

如果窗口没有父窗口,则其父属性是引用   对自己

就是这样。

在他们的示例中,它们提供了一种实现您的要求的方式(与您的解决方案略有不同的角度):

if (window.parent != window.top) {
  // we're deeper than one down
}

更多参考资料:

W3

  

Window对象的父属性的值必须是   父文档的Window对象或文档的Window对象if   没有父文件

答案 1 :(得分:0)

您可以将document.referrerwindow.location.href

进行比较

JSFiddle