获取顶部框架的URL

Joe*_*oel 4 javascript jquery

在Facebook应用程序内部,我需要检查顶部框架(主窗口)URL是什么,并相应地显示内容.

我尝试使用以下内容:

if (top.location.toString().toLowerCase().indexOf("facebook.com") <0) { ... }
Run Code Online (Sandbox Code Playgroud)

如果页面不在iframe中,但在iframe中加载页面时(如用作facebook应用程序时那样),代码会生成

"未捕获的TypeError:对象#的属性'toString'不是函数".

有什么方法可以修复这个代码(跨浏览器兼容性 - 可能与jQuery)?

谢谢!

乔尔

小智 9

确实,跨源关注将阻止您访问此顶部窗口位置.但是,如果您只想要iframe的父窗口位置,则可以通过document.referrer字符串获取它.

在你的iframe中你会抓住网址:

var parentURL = document.referrer

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

我在我自己的iframe应用程序中成功使用了这个.此外,请注意,如果您在iframe中导航,引荐来源将会更改.

Nicholas Zakas在他的博客上写了一篇文章:http: //www.nczonline.net/blog/2013/04/16/getting-the-url-of-an-iframes-parent/


Mar*_*sen 5

您遇到的问题是不允许您top.location跨不同的文档域访问.

这是浏览器内置的安全功能.

阅读XSS以及安全预防措施的原因:)

您还可以通过阅读相同的原始政策来学习很多东西

  • 如果你不在iframe中,那么window.top === window`将返回true (2认同)