Javascript 检查父窗口是否为iframe

Javascript 检查父窗口是否为iframe,javascript,jquery,iframe,Javascript,Jquery,Iframe,如果父对象本身也在iframe中,我如何从iframe中的页面判断呢 说明: 我的主页home.html包含一个iframe <iframe src="sample.html"></iframe> 我的问题不是重复的。这是另一种情况。如果窗口不是帧/iframe,则这是正确的: if(self==top) 如果要查看给定窗口的父窗口是否为框架,请使用: if(parent==top) 这是对top(窗口层次结构中最顶层的窗口)和另一个窗口对象(self或parent

如果父对象本身也在iframe中,我如何从iframe中的页面判断呢

说明:

我的主页
home.html
包含一个iframe

<iframe src="sample.html"></iframe>

我的问题不是重复的。这是另一种情况。

如果窗口不是帧/iframe,则这是正确的:

if(self==top)
如果要查看给定窗口的父窗口是否为框架,请使用:

if(parent==top)

这是对
top
(窗口层次结构中最顶层的窗口)和另一个窗口对象(
self
parent
)的简单比较。

检查
window.frameElement
是否为空,并查看其节点名属性是否为“IFRAME”:


有点不清楚。。。在iframe中的页面中是否有iframe?是否要检查某个页面是否在iframe中,或者包含该iframe的页面是否在iframe中?重复:那么区别是什么sonce home.html是一个iframe,那么我需要从sample.html中检测home.html是一个iframe。答案都不起作用如果你想检查父窗口是否在一个框架内,只需使用
if(parent==top)
(如果父窗口不是一个框架,则返回true)就可以理解我的问题。谢谢你,如果(parent==top)对你的答案有效,就像(parent==top)你刚刚为我节省了一个小时。谢谢。如果您希望您的帧可能位于域外的帧中,那么测试top就不是那么好了。例如,您的站点通过框架/iframe引用托管在其他人的网站上(博客模板站点等有时会发生这种情况)。由于“top”可能位于不同的域中,测试parent==top可能会引发跨域错误。尝试在容器框架中放置一个标记并测试它(例如if(parent.myVar)或者只需
var isInIFrame=window.location!==window.parent.location;
就可以了。在一种边缘情况下,这是行不通的:如果您已将相同的页面加载到包含iframe的iframe中。此外,跨域或类似的保护将在访问window.parent时导致脚本错误propery@oriadam如果它抛出一个e错误您可以假设它在一个iframe中。这个答案很好,因为它包含一个简单而直接的方法来访问包含当前页面的
iframe
元素(当它加载到这样的页面中时)。我同意@Oliver。这种方法比上面的其他两个答案以及我见过的任何其他处理此问题的策略简单得多。这应该是可接受的答案…对于跨源iFrame,这将失败。返回元素(例如或)其中嵌入了窗口,如果元素是顶级元素或嵌入到具有不同脚本源的文档中,则为null;也就是说,在跨源情况下。
if(parent==top)
var isInIFrame = (window.location != window.parent.location);
if(isInIFrame==true){
    // iframe
}
else {
    // no iframe
}
var isInIframe = window.frameElement && window.frameElement.nodeName == "IFRAME";