可能重复:
从IFRAME访问父网址
我一直在四处寻找,但无法找到一组答案或解决方案这一点。 我有2个网站, www2.domain.net
和www3.domain.net
这两个网站都对他们的iFrame链接至www.domain.co.uk/iframe.html
我想要做的是检查父URL,即-是访问用户www2.domain.net
或www3.domain.net
这样我就可以显示特定信息,只是人们访问www3.domain.net
。
这可能吗?
谢谢,安德鲁
这是可能的,但不是很简单,需要你有过参与全部三个页面控制。
如果你控制所有三个站点有交叉窗口消息,礼貌window.postMessage()
然而,这是(相对)新增加的DOM和不支持在旧的浏览器等IE 7,IE 6,Safari浏览器4,火狐2和Opera 9。
// Parent:
iframeWin.postMessage("Hello, from "+window.location.host);
// Iframe:
window.onmessage = function (evt) { alert(evt.origin); }
另一种选择是经由URL来传递域,然后解析该在另一端:
<iframe src="www.domain.co.uk/iframe.html?www2.domain.net" />
和所需的JavaScript(从iframe内的页面调用):
alert(window.location.search);
//-> "?www2.domain.net"
它不是。 I帧被认为是帧,所以跨域策略适用于他们。 由于IFRAME域(www.domain.co.uk/iframe.html)大于父域(www3.domain.net)不同它不能访问父域。 我相信,但是,你可以从父域或者通过DOM或通过window.frames仍然可以访问IFRAME(所有框架的阵列包括I帧)。
这是不可能在这种情况下(如发布)由于同源策略 。 然而,似乎可以控制所有这些领域。 如果是这样,你可以使用查询字符串传递到iFrame标记的src属性父域和访问到iFrame网页。 见@安迪的回答实施。