【问题标题】:Get top window url from frame/iframe in different domain从不同域中的框架/iframe 获取顶部窗口 url
【发布时间】:2012-01-26 23:39:35
【问题描述】:

我有一个网页,里面有一些 javascript,它将作为 iframe 嵌入到不同的网站中。我需要根据运行它的网站调整我的页面的行为。为此,我尝试从我的页面读取top.location.href,但这引发了错误:

不安全的 JavaScript 尝试使用 URL http://website.url 访问框架 来自 URL http://mypage.url 的框架。域、协议和端口 必须匹配。

有没有办法解决这个问题?

【问题讨论】:

标签: javascript same-origin-policy


【解决方案1】:

在最常见的情况下,您确实可以检索 iframe 的父 url。如果 iframe 仅深一层,则此方法将起作用:

var parentURL = document.referrer

https://developer.mozilla.org/en-US/docs/Web/API/document.referrer

我在创建 iframe 小部件时使用了这种方法。请记住,如果您想要顶级窗口位置,但它不是 iframe 的父窗口......您将无法获得它。此外,如果您的小部件在 iframe 内导航,则引用者将发生变化。

可以在他的博客上找到 Nicholas Zakas 的另一篇精彩文章: http://www.nczonline.net/blog/2013/04/16/getting-the-url-of-an-iframes-parent/

【讨论】:

  • 为什么投反对票?这很有效,并且可能对其他人有用。
  • 编辑:我没有投反对票,但也许有人投了反对票,因为它不一定会给你最高位置。但是很好的信息谢谢。
  • 当 iframe 和顶部位置不在同一个协议上时,它不会工作。
【解决方案2】:

这与您所说的相同来源政策相同,并且出于安全原因而实施。如果不更改用户浏览器,就无法绕过它。

【讨论】:

  • 我希望有其他方法可以获取该信息。我仍然不明白为什么现代浏览器如此严格并认为框架读取其顶部 url 是有害的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-21
  • 2013-04-26
  • 1970-01-01
  • 2011-10-21
相关资源
最近更新 更多