2015-01-07 49 views
0

如果我從另一個域中的iframe中加載頁面,是否有包含的頁面查看iframe元素或它的父元素是否可見(例如,使用jquery的is(':hidden'))?如果iframe元素本身可見或不可見,iframe中的頁面可以「看到」跨域嗎?

我可以控制兩個域 - 我可以設置CORS,屬性等等。一切我嘗試仍然給我這樣的:

Uncaught SecurityError: Blocked a frame with origin "http://s-college.mydomain.com" from accessing a frame with origin "http://qaf.ng.mydomain.com". Protocols, domains, and ports must match.

如果有幫助,基域實際上是相同的,只是在子域是不同的。

+0

據我所知,沒有。 – Steve

+1

可以使用postMessage API,因爲您可以控制這兩個域。使用直接訪問的另一種方式是將'document.domain'設置爲在兩者中匹配,然後您可以使用相同的代碼,就好像它是同一域上的iframe一樣 – charlietfl

+0

CORS與這類事情無關嗎? –

回答

1

如果它們都位於相同的高級域(例如foo.example.combar.example.com),則可以在JavaScript中設置document.domain

document.domain = 'example.com'; 

這將允許跨幀通信。

CORS只適用於(主要是AJAX)請求,所以它不適用於此。

只是爲了防止其他人發現這個問題,他們沒有在同一個更高級別的域:如果他們在不同的域,您將需要使用window.postMessage爲了溝通跨幀。