如何识别网页是在iframe内加载还是直接加载到浏览器窗口中?
2022-08-29 22:32:21
我正在写一个基于iframe的Facebook应用程序。现在我想使用相同的html页面来呈现普通网站以及Facebook中的画布页面。我想知道我是否可以确定页面是在iframe内加载还是直接在浏览器中加载?
我正在写一个基于iframe的Facebook应用程序。现在我想使用相同的html页面来呈现普通网站以及Facebook中的画布页面。我想知道我是否可以确定页面是在iframe内加载还是直接在浏览器中加载?
浏览器可能会由于同源策略而阻止访问。IE错误也会发生。以下是工作代码:window.top
function inIframe () {
try {
return window.self !== window.top;
} catch (e) {
return true;
}
}
top
并且两者都是对象(以及 ),因此您可以看到您的窗口是否是顶部窗口。self
window
parent
当在与父级位于同一源的 iframe 中时,window.frameElement
方法返回该元素(例如 或 ),其中嵌入了窗口。否则,如果在顶级上下文中浏览,或者父框架和子框架具有不同的原点,则其计算结果将为 。iframe
object
null
window.frameElement
? 'embedded in iframe or object'
: 'not embedded or cross-origin'
这是一个HTML标准,在所有现代浏览器中都有基本的支持。