访问IFrame的父网址[复制](Access IFrame's parent URL [d

2019-09-28 07:31发布

可能重复:
从IFRAME访问父网址

我一直在四处寻找,但无法找到一组答案或解决方案这一点。 我有2个网站, www2.domain.netwww3.domain.net这两个网站都对他们的iFrame链接至www.domain.co.uk/iframe.html

我想要做的是检查父URL,即-是访问用户www2.domain.netwww3.domain.net这样我就可以显示特定信息,只是人们访问www3.domain.net

这可能吗?

谢谢,安德鲁

Answer 1:

这是可能的,但不是很简单,需要你有过参与全部三个页面控制。

如果控制所有三个站点有交叉窗口消息,礼貌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"


Answer 2:

它不是。 I帧被认为是帧,所以跨域策略适用于他们。 由于IFRAME域(www.domain.co.uk/iframe.html)大于父域(www3.domain.net)不同它不能访问父域。 我相信,但是,你可以从父域或者通过DOM或通过window.frames仍然可以访问IFRAME(所有框架的阵列包括I帧)。



Answer 3:

这是不可能在这种情况下(如发布)由于同源策略 。 然而,似乎可以控制所有这些领域。 如果是这样,你可以使用查询字符串传递到iFrame标记的src属性父域和访问到iFrame网页。 见@安迪的回答实施。



文章来源: Access IFrame's parent URL [duplicate]