用于获取跨域URL的iFrame替代方案
iFrame alternative for getting cross-domain URL
我正在创建一个基于网络的游戏。作为其中的一部分,玩家必须访问网站的主页,并遵循一系列链接,直到他在可能的短时间内到达"目的地页面"。把它想象成一种寻宝游戏。
为了控制游戏,我创建了一个页面,上面有一个javascript计时器,还有一个iFrame显示要冲浪的网站(这不是我的,我无法控制它)。
然而,这有一个巨大的错误:无法检测iFrame当前的跨域URL,因此我的页面无法知道用户何时到达目的地页面并停止游戏。
我有其他办法可以做到这一点吗?
您可以等待,直到iFrame的contentWindow
被解析,并且您在实际更改源之后有了对iFrame窗口的引用。一旦你有了它,你就可以在iFrame的<body>
上添加一个加载处理程序,并在该处理程序中注入一些postMessage
调用,所以一旦iFrame窗口的主体被加载,它就会从主体的加载处理程序中调用postMessage,它会通知你的外窗口,当然你必须使用window.addEventListener("message", callback)
在外窗口中添加消息侦听器
我有其他办法可以做到这一点吗?
不,没有。
同源策略完全阻止您访问显示其他域内容的任何窗口对象的属性。
(如果其中一个是另一个的子域,那么document.domain
会有所帮助。但从你的问题描述来看,情况并非如此。)
除了技术问题之外:在一个你不拥有的网站上生成流量和点击量(这会扭曲他们的统计/分析),仅仅是为了展示你自己的游戏,这是相当不公平的(又称"迪克移动")
相关文章:
- 防止Iframe窗体在新窗口中打开
- 轻量级zxcvbn替代方案
- 正在寻找比$(document).ready慢的$(window).load的替代方案
- ng映射方向备选方案
- 将样式表插入iframe
- 在Twitter上用ie9中的空白src访问iframe的contentWindow
- 使用jQuery从原始页面内容创建iframe
- Highslide(iframe的侦听器)
- iframe正在添加标签,需要删除它们
- 通过javascript/html访问twitter共享iframe
- 如何在Facebook上的iframe应用程序中使后退按钮返回到上一页
- 如何使用Angular动态添加iframe-src
- 用于获取跨域URL的iFrame替代方案
- 在页面帮助中进行设计.iframe的替代方案
- HTML:iframe sandbox 替代方案
- Iframe的Javascript替代方案
- javascript的解决方案:history.go(-1)与花式框iFrame
- Iframe滚动问题.解决方案是什么
- 在iframe中加载Facebook的替代方案
- 无法找到从iFrame打印的跨浏览器解决方案