繁体   English   中英

如何检测元素是否在跨域父级的iframe中可见

[英]How to detect if an element is visible within an iframe that is on a cross domain parent

正如问题所指出的,我有一个跨网域父级的iframe。 如果该内容在页面加载时滚动到视图中或已经在视图中,则我需要触发一个事件。 正常检查距页面顶部/侧面的距离以及视口的高度/宽度似乎不起作用,因为它们在iframe本身中测量页面。

我无法在父页面上编辑/添加任何内容来启用此功能,所有内容都必须在iframe本身内。

这背后的原因是要记录内容是否曾经被用户查看过,或者是否已被加载到视线之外并保持在那里。

有一些公司提供这项广告服务,但就弄清楚它是如何完成的而言,这似乎是一门黑手艺。

任何帮助将不胜感激。

编辑:我提到的提供这项服务的公司的两个例子。

  1. 查看(4) http://www.doubleverify.com/what-is-verification/下的第一个刻度
  2. 他们声明的第一件事是可以在右侧进行操作http://adxpose.com/home.page

spider.io可能使用浏览器计时攻击来做到这一点。 他们的页面上有一个视频:

http://www.spider.io/viewability/

这是有关一些浏览器定时攻击如何工作的不错报告: http : //www.contextis.com/documents/2/Browser_Timing_Attacks.pdf

简单的答案是, 您不能

由于存在相同来源策略,因此无法使用ECMAscript访问跨域iframeDOMwindow object )。

doubleverify和adxpose使用“离线”技术来确定广告是否可见,它不会在网页视图上显示。 如果他们通过Javascript做到了,那么您所要做的就是查看他们的像素之一,看看它是如何工作的。

您确定这些示例完全基于iframe吗? 也许他们需要向父窗口添加一些JavaScript。

如果您确实需要这样做,并且不需要100%的准确性,那么我将尝试一些基于时间的技术,并假设大多数浏览器将优化发生在视图之外的图形工作。

现实地说,我认为使用这种技术在合理的时间内无法获得预期的结果,也无法期待使用一个通用的强大的跨浏览器解决方案。 不过那会很有趣。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM