获取 parent.location.url - iframe - 从孩子到父母

IT技术 javascript jquery html iframe
2021-03-16 23:58:36

我有一个显示在 iframe 中的页面。

我需要从该页面(子页面)获取带有 js 的 parent.location.url。

两个站点都在不同的域中。

我正在努力:

警报(parent.location.url)

但我收到此错误:

http://parentdomainhttp://childdomain获取属性 Location.URL 的权限被拒绝

???? 是否可以?

6个回答

试试这个:

var referrer = document.referrer;
alert(referrer);
出于域的原因喜欢这个解决方案,但它没有得到完整的 URL。它缺少 window.location 将返回的哈希变量。
2021-04-23 23:58:36
谢谢,在所有建议的解决方案中,当 iframe 与调用页面位于不同的域时,这是唯一一个向我提供信息的解决方案。
2021-04-28 23:58:36
正在寻找一种方法来访问 CodePen 中的浏览器 URL(笔位于 iFrame 中)。这允许我在 CodePen 仪表板页面上不设置 autoFocus。这工作得很好。if (document.referrer !== 'https://codepen.io/KeithDC/' && document.referrer !== 'https://codepen.io/KeithDC') { this.textInput.focus(); }
2021-04-29 23:58:36
HTTPS 时可以做引用吗?有没有一些走动?
2021-05-05 23:58:36
这似乎不适用于 IE11,您有 IE 的解决方案吗?
2021-05-12 23:58:36

你想要做的事情本身是不可能的。除非您可以控制父页面对子页面的调用。如果这样做,那么您可以在父页面的 URL 中使用 get 语句调用子页面。因此,如果您的父页面是http://parentpage.com,那么您应该如何调用 iFrame。

<iframe src='http://childpage.com/?parent=http://parentpage.com' />

然后在子页面中获取引用所需要做的就是获取字符串

window.location.search //not sure of browser compatibility with this

并通过从该字符串中抓取父页面的 URL 来提取它。我会提供更多细节,但我什至不确定我的第一个问题。

这不是一个好习惯,因为任何域都可以添加类似上述的搜索参数,然后 iframe 中的子页面可能会被认为是来自列入白名单的父页面。简而言之,如果你这样做了,不仅parentpage.com,而且evilpage.com也可以制作这样的iframe,childpage将父页面解析为parentpage.com。这将是一个很大的安全漏洞。孩子将无法使用 window,parent.location.origin(跨域父级),因为它会引发异常。出于安全目的,它是这样实现的。最好的选择是使用 document.referrer。
2021-04-30 23:58:36
我尝试了此处列出的所有其他方法。现在是 2015 年,由于相当严格的浏览器权限问题,在这种情况下阻止了 JavaScript。将数据传递到 url 中的 iFrame 是唯一的方法。
2021-05-16 23:58:36

你有没有试过这样的事情:

alert(window.top.location.href);
我无法控制父页面:S
2021-04-20 23:58:36
如果您只是想查看引用者(即加载该框架的人),您是否尝试过类似的操作: if (document.referrer != '') document.write('Thanks for visit from ' + document .referrer);
2021-04-21 23:58:36

当父页面和 iframe 在同一个域中时有效。如果它们不在同一个域中,您可以尝试通过src传递位置,就像麦迪逊威廉姆斯建议的那样。

这可能就是您收到“权限被拒绝...”的原因

你可以这样找到它,并且所有浏览器都应该能够支持它:

query = window.parent.location.search.substring(1);

你不应该得到权限错误,但我可能是错的。