如何識別網頁是在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標準 ,全部現代瀏覽器都提供基本支持。

相關文章
相關標籤/搜索