Dip*_*ndu 6 javascript iframe cross-domain
我正在编写一个JavaScript像素,将在发布商页面上使用AD广告素材.此广告将包含在发布商网站上的跨域iframe(有时是多个级别)中.所以发布商页面看起来像这样
主持人(出版商)网站
<html>
<iframe src="http://domain1.com" name="first_level_iframe">
<iframe src="http://domain2.com" name="second_level_iframe">
<!--The script I want to write will be hosted here-->
</iframe>
</iframe>
</html>
Run Code Online (Sandbox Code Playgroud)
如果广告客户想要了解他/她的AD所服务的所有页面,那么我们需要知道主机页面网址.
正如这里提到的,我们可以像这样使用document.referrer获取父页面url
var url = (window.location != window.parent.location) ? document.referrer: document.location;
Run Code Online (Sandbox Code Playgroud)
但它只适用于只有一级的域.我们无法达到最高级别,因为我们对"domain1.com"iframe没有任何控制权.这是人们试图长期解决的一个问题,而且已经有许多问题已经在SO上提出了完全相同的问题.但是因为这篇文章,我再次问它.它声称他们拥有可以检测顶级窗口URL的专利解决方案.以下是博客的摘录
救生员是AdSafe开发的一种技术:解决方案的关键是能够读取托管广告的顶部框架的地址(*).我们正在检测色情内容,因为应该出现在"干净的发布商"网站中的广告出现在色情网站的框架内.将HGTV视为一个说明性的,但不是这种"干净的出版商"的真实例子.
那么,有没有办法检测顶级窗口网址?
我有一个解决方案可以让您在 Chrome 和 Opera 中获取域(在多个嵌套的跨域 iframe 中),但不幸的是,这在其他浏览器中是不可能的。
您可以使用“window.location.ancestorOrigins”属性。
此代码片段将跨浏览器工作,为您获取最接近的页面 URL:https ://gist.github.com/ocundale/281f98a36a05c183ff3f.js
| 归档时间: |
|
| 查看次数: |
1844 次 |
| 最近记录: |