如何识别网页是在iframe中加载仍是直接加载到浏览器窗口中?

我正在写一个基于iframe的Facebook应用程序。 如今,我想使用相同的html页面来呈现普通网站以及facebook中的画布页面。 我想知道是否能够肯定页面是否已在iframe中加载或直接在浏览器中加载? php


#1楼

我正在使用这个: html

var isIframe = (self.frameElement && (self.frameElement+"").indexOf("HTMLIFrameElement") > -1);

#2楼

if (window.frames.length != parent.frames.length) { page loaded in iframe }

可是,只有在您的网页和将您加载到iframe的网页中,iframe的数量不一样时。 在您的网页中没有iframe能够保证此代码的结果100% 浏览器


#3楼

在每一个页面中编写此JavaScript 框架

if (self == top)
  { window.location = "Home.aspx"; }

而后它将自动重定向到主页。 dom


#4楼

若是您想知道用户是否正在从Facebook页面选项卡或画布访问您的应用程序,请检查“签名请求”。 若是您不了解,则多是用户未从Facebook访问。 为了确保确认signed_request字段结构和字段内容。 网站

使用php-sdk,您能够像这样得到Signed Request: spa

$signed_request = $facebook->getSignedRequest();

您能够在此处阅读有关签名请求的更多信息: code

https://developers.facebook.com/docs/reference/php/facebook-getSignedRequest/ htm

和这里: ip

https://developers.facebook.com/docs/reference/login/signed-request/


#5楼

在与父源相同的iframe中, window.frameElement方法返回嵌入窗口的元素(例如iframeobject )。 不然,若是在顶级上下文中浏览,或者父框架和子框架具备不一样的来源,则它将评估为null

window.frameElement
  ? 'embedded in iframe or object'
  : 'not embedded or cross-origin'

这是HTML标准 ,全部现代浏览器都提供基本支持。

相关文章
相关标签/搜索