Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取parent.location.url-iframe-从子级到父级_Javascript_Jquery_Html_Iframe - Fatal编程技术网

Javascript 获取parent.location.url-iframe-从子级到父级

Javascript 获取parent.location.url-iframe-从子级到父级,javascript,jquery,html,iframe,Javascript,Jquery,Html,Iframe,我得到了一个显示在iframe中的页面 我需要从该页面(子页面)获取带有js的parent.location.url 两个站点位于不同的域中 我正在努力: 警报(parent.location.url) 但我得到了这个错误: 从中获取属性Location.URL的权限被拒绝 ????可能吗?您是否尝试过以下方法: alert(window.top.location.href); 你想做的事情本身是不可能的。除非您可以控制父页面对子页面的调用。如果这样做,则可以使用父页面URL中的get语句调用

我得到了一个显示在iframe中的页面

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

两个站点位于不同的域中

我正在努力:

警报(parent.location.url)

但我得到了这个错误:

从中获取属性Location.URL的权限被拒绝


????可能吗?

您是否尝试过以下方法:

alert(window.top.location.href);

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

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

并从该字符串中提取父页面的URL。我想提供更多细节,但我甚至不确定我的第一个问题。

只有当父页面和iframe在同一个域上时,它才会起作用。如果它们不在同一个域上,您可以尝试通过src传递位置,就像Madison Williams建议的那样

这可能就是您获得“权限被拒绝…”的原因。

请尝试:

var pathname = window.parent.location.href
试试这个:

var referrer = document.referrer;
alert(referrer);

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

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

您不应该因此而获得权限错误,但我可能错了。

用于在窗口之间来回传递数据。这有点麻烦,但在让windows跨源进行通信时是必需的。

您控制这两个域吗?如果是的话,很可能。否则不行。我无法控制父页面:如果您只是想查看推荐人(即加载该框架的人),您是否尝试过类似的操作:if(document.referer!='')document.write('感谢您从'+document.referer访问');谢谢,在所有建议的解决方案中,当iframe位于与调用页面不同的域时,这是唯一一个向我提供信息的解决方案。出于域的原因,我喜欢这个解决方案,但它没有获得完整的URL。缺少window.location将返回的散列变量。这在IE11上似乎不起作用,您有IE的解决方案吗?当使用HTTPS时,您可以进行引用吗?是否有一些变通方法?我们正在寻找一种方法来访问代码笔内的浏览器URL(笔在iFrame中)。这允许我在CodePen仪表板页面上不设置自动对焦。这很有效<代码>如果(document.referer!='https://codepen.io/KeithDC/“&&document.referer!=”https://codepen.io/KeithDC“){this.textInput.focus();}我尝试了这里列出的所有其他方法。现在是2015年,由于相当严格的浏览器权限问题,在这种情况下阻止了JavaScript。将数据传递到url中的iFrame是唯一的方法。这不是一个好的做法,因为任何域都可以添加如上所述的搜索参数,然后iFrame中的子页面就会被认为是来自白名单上的父页面。简而言之,如果您执行上述操作,不仅parentpage.com,而且evilpage.com也将能够生成这样的iframe,子页面将父页面解析为parentpage.com。这将是一个很大的安全漏洞。子项将无法使用窗口parent.location.origin(跨域父项),因为它将引发异常。出于安全目的,它是以这种方式实现的。最好的选择是使用document.referer.+1,因为这是使用SharePoint托管的加载项部件时唯一有效的解决方案。document.referer不起作用,无法从加载项部件中访问从主机web设置iframe src属性。我都试过了,这个很好用。非常感谢。
query = window.parent.location.search.substring(1);