Javascript 访问IFrame';s的父URL

Javascript 访问IFrame';s的父URL,javascript,html,url,iframe,parent,Javascript,Html,Url,Iframe,Parent,可能重复: 我一直在四处寻找,但找不到一个固定的答案或解决方案。 我有两个网站,www2.domain.net和ww3.domain.net这两个网站都有一个iFrame,链接到www.domain.co.uk/iFrame.html 我要做的是检查父URL,即-用户正在访问www2.domain.net或www3.domain.net,这样我就可以向访问ww3.domain.net的用户显示特定信息 这可能吗 谢谢, 安德鲁事实并非如此。iFrame被视为帧,因此跨域策略适用于它们。由于if

可能重复:

我一直在四处寻找,但找不到一个固定的答案或解决方案。 我有两个网站,
www2.domain.net
ww3.domain.net
这两个网站都有一个iFrame,链接到
www.domain.co.uk/iFrame.html

我要做的是检查父URL,即-用户正在访问
www2.domain.net
www3.domain.net
,这样我就可以向访问
ww3.domain.net
的用户显示特定信息

这可能吗

谢谢,
安德鲁

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

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

这是可能的,但不是很简单,需要您控制所有涉及的三个页面

如果您确实控制了这三个站点,则可以通过跨窗口发送消息,这是由提供的。然而,它是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" />

如果你处于相同的位置,这是可能的domain@Mohsen,OP清楚地提到了所有领域。host page和iframe的域不同,因此iframe无法读取父对象的位置。@Mohsen,你想用小提琴演示什么?在任何情况下,由于jsFiddle本身在另一个iFrame中呈现结果,该iFrame的域为fiddle.jshell.net(不同于父jsFiddle.net),因此您编写的示例生成“拒绝访问属性'href'的权限”(如预期的那样)。这在许多浏览器中都不受支持messaging@Mohsen当前位置我的大脑漏掉了两个单词的答案,现在已经修复了。当你说“这个”时,似乎你指的是整个答案。我回答的最后一部分可以在任何浏览器中实现。
alert(window.location.search);
//-> "?www2.domain.net"