用于获取跨域URL的iFrame替代方案

时间:2016-04-10 10:08:31

标签: javascript html iframe

我正在创建一个基于网络的游戏。作为其中的一部分,玩家必须访问网站的主页,并按照一系列链接,直到他在可能的次要时间内到达“目的地页面”。把它想象成一种寻宝链接。

为了控制游戏,我在顶部创建了一个带有javascript计时器的页面,以及显示要浏览的网站的iFrame(这不是我的,我无法控制它)。

然而,这有一个巨大的错误:无法检测到iFrame的当前跨域URL,因此我的页面无法知道用户何时到达目标页面并停止游戏。

有没有其他方法可以实现这个目标?

2 个答案:

答案 0 :(得分:0)

  

有没有其他方法可以实现这个目标?

不,没有。

同源策略完全阻止您访问显示来自其他域的内容的任何窗口对象的属性。

(如果一个是另一个的子域,那么document.domain会有所帮助。但是根据你的问题描述,听起来并非如此。)

除了技术问题:在您不拥有的网站上生成流量和点击(这会使他们的统计/分析偏差),只是为了能够展示您自己的游戏,这将是相当不公平的(又名“迪克动作”。)

答案 1 :(得分:0)

您可以等到iFrame的contentWindow已解决,并且在您实际更改了源后,您可以引用iFrame的窗口。 一旦你有了,你可以在iFrame的<body>上添加一个onload处理程序,并在该处理程序中注入一些postMessage调用,所以一旦主体加载了iFrame的窗口,它将从onload处理程序调用postMessage正文,它将通知你的外部窗口,当然你必须使用window.addEventListener("message", callback)

在外窗口添加消息监听器