前段时间我参与的项目中也遇到这个问题,原有的框架使用的也是嵌套iframe的结构,导致iframe中的二维码在IOS下无法识别,最后我的解决方法如下。 解决实现逻辑 1、当iframe中的二维码被按下touchstart的时候,将二维码地址推送至父页面2、父页面接收到二维码识别的请求,则创建一个不可见的img元素,src为刚刚传输过来的二维码地址,并且二维码置顶铺满整个屏幕3、在touchend与touchcancel时,通知父窗体删除二维码。 父子页面推送的实现 目前主要采用postMessage进行父子页面之间的消息传递,postMessage可以在不同域之间使用,所以没有跨域问题。若是同域、并且需要对低版本浏览器IE < 8进行兼容,子页面可以使用parent、父页面使用frames[id||name]进行通信 注:在Firefox中frames使用iframe的name属性
前段时间我参与的项目中也遇到这个问题,原有的框架使用的也是嵌套iframe的结构,导致iframe中的二维码在IOS下无法识别,最后我的解决方法如下。
解决实现逻辑
1、当iframe中的二维码被按下
touchstart
的时候,将二维码地址推送至父页面2、父页面接收到二维码识别的请求,则创建一个不可见的
img
元素,src
为刚刚传输过来的二维码地址,并且二维码置顶铺满整个屏幕3、在
touchend
与touchcancel
时,通知父窗体删除二维码。父子页面推送的实现
目前主要采用
postMessage
进行父子页面之间的消息传递,postMessage
可以在不同域之间使用,所以没有跨域问题。若是同域、并且需要对低版本浏览器
IE < 8
进行兼容,子页面可以使用parent
、父页面使用frames[id||name]
进行通信