我有一个iFrame,显示来自外部网址的投票(跨域)。
在这个iFrame中,我有提交按钮,我需要以某种方式测量点击。经过谷歌搜索后我无法找到解决方案,但最后一个想法进入我的脑海。
我是否可以在该按钮上方放置一个看不见的绝对定位div,测量该div上的点击,然后以某种方式点击发送按钮?
你还有其他想法吗?
答案 0 :(得分:0)
经过进一步研究......
您希望实现的目标 - 如果iframe
内的网站支持跨域功能。如果他们已经设定您允许操纵他们的内容,则可以使用document.contentDocument
https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/contentDocument获取他们的文档。但是,正如我所说,假设其他网站允许您这样做。
第二种选择是使用你提到的东西,一个隐藏的div高于其他所有东西,但不是你想要的方式。未经其他网站许可,您仍然无法跨域发送点击事件,但您可以采取行动而不是停止点击事件,然后只检测到点击发生(例如绑定到您自己的文档全局) onclick事件)然后获取点击的X和Y坐标,然后在其他网站的分析中使用它,例如通过生成的屏幕截图,使用类似OpenCV的东西以图形方式查找按钮(显然,这是一种非常复杂的方式来执行此类操作)。
我的第三种选择是完全跳过iframe方法。这更复杂,但它允许您以任何方式操纵其他网站。
基本上,你可以找到从其他网站获得所需资源的地方,以便自己渲染,然后使用例如AJAX要求获取所有这些资源,并基本上通过使用其来源而非iframe来重新创建您自己网站中的其他网站。
这种方法的问题在于,如果没有他们的许可,这是非常非法的,因为你不仅要窃取他们的源代码,而且你也可能(可能)使用这种方法来例如冒充另一个网站,这将是骗局。
必须操纵iframe(当你不拥有其他域名时)是诈骗活动或其他此类非法活动的99%,这就是为什么它如此难以做到的原因。它可以使用非法和复杂的技术来完成,但是开发和运行这些方法的工作比仅仅开发你想借用的其他网站或功能还要多。
如果您拥有其他域并且实际上正在做一些合法的事情,那么您可以更改iframed网站的政策,以允许非常简单的document.contentDocument
方法获取iframe文档并与之交互,就像您一样你自己的网站。
非法是艰难的,更多的工作,但理论上可行。
法律很容易,几乎不需要额外的工作,但要求所有权或与您组织的其他网站建立合作伙伴关系。