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

iFrame alternative for getting cross-domain URL

本文关键字:iFrame 方案 URL 获取 用于      更新时间:2024-04-28

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

为了控制游戏,我创建了一个页面,上面有一个javascript计时器,还有一个iFrame显示要冲浪的网站(这不是我的,我无法控制它)。

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

我有其他办法可以做到这一点吗?

您可以等待,直到iFrame的contentWindow被解析,并且您在实际更改源之后有了对iFrame窗口的引用。一旦你有了它,你就可以在iFrame的<body>上添加一个加载处理程序,并在该处理程序中注入一些postMessage调用,所以一旦iFrame窗口的主体被加载,它就会从主体的加载处理程序中调用postMessage,它会通知你的外窗口,当然你必须使用window.addEventListener("message", callback) 在外窗口中添加消息侦听器

我有其他办法可以做到这一点吗?

不,没有。

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

(如果其中一个是另一个的子域,那么document.domain会有所帮助。但从你的问题描述来看,情况并非如此。)


除了技术问题之外:在一个你不拥有的网站上生成流量和点击量(这会扭曲他们的统计/分析),仅仅是为了展示你自己的游戏,这是相当不公平的(又称"迪克移动")