访问IFrame的父网址

时间:2011-09-27 19:56:40

标签: javascript html url iframe parent

  

可能重复:
  access parent url from iframe

我一直在环顾四周,但却无法找到答案或解决方案。 我有2个网站,www2.domain.netwww3.domain.net这两个网站都有一个链接到www.domain.co.uk/iframe.html的iFrame

我想要做的是检查父网址,即 - 是访问www2.domain.netwww3.domain.net的用户,以便我可以向访问www3.domain.net的人显示具体信息。

这可能吗?

谢谢, 安德鲁

3 个答案:

答案 0 :(得分:1)

这是可能的,但不是非常简单,并且要求您控制所涉及的所有三个页面。

如果您 控制所有三个网站,那么就会有window.postMessage()提供的跨窗口消息传递。但是,它是DOM的一个(相对)新增功能,在IE 7,IE 6,Safari 4,Firefox 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"

答案 1 :(得分:0)

不是。 iframe被视为框架,因此跨域政策适用于它们。由于iframe域(www.domain.co.uk/iframe.html)与父域(www3.domain.net)不同,因此无法访问父域。但是,我相信您仍然可以通过DOM或window.frames(包括iframe在内的所有帧数组)从父域访问iframe。

答案 2 :(得分:-1)

由于Same Origin Policy,在这种情况下(已发布)是不可能的。但是,您似乎控制了所有这些域。如果是这样,您可以使用查询字符串在iFrame标记的src属性中传递父域,并在iFrame页面中访问它。请参阅@ Andy的实施答案。