获取顶部窗口url从框架/iframe在不同的域

Get top window url from frame/iframe in different domain

本文关键字:iframe 窗口 顶部 url 框架 获取      更新时间:2023-09-26

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

不安全的JavaScript试图访问URL为http://website.url的框架从框架URL http://mypage.url。域、协议和端口必须匹配。

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

在大多数情况下,您确实可以检索iframe的父url。如果iframe只有一层深度,这个方法将起作用:

var parentURL = document.referrer

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

我在创建iframe小部件时使用了这个方法。只要记住,如果你想要顶层窗口的位置,但它不是你的iframe的父窗口…你不会得到它的。此外,如果您的小部件在iframe内导航,则referrer将随之更改。

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

这是你所说的同源策略,它是出于安全原因。如果不改变用户的浏览器,就没有办法绕过它。