iframe在iphone手机上的问题与解决方案

来源 | http://www.fly63.com/article/detial/7370

问题1:

通过document.addEventListener("scroll",function(){})对页面滚动监听事件进行监听,但ios下$(document).scrollTop()值始终为0,对页面监听无效。

原因:

因为iOS下iframe的高度会根据页面的内容自适应,造成了iframe的高度过高(即iframe的高度>屏幕的高度)。则iframe内部html、body标签即使设置为100%,它的值也是页面所有内容撑开的高度。

解决方法:

将body设置为fixed,宽高设为100%,添加-webkit-overflow-scrolling: touch;在body下写一个div,针对这个div进行scroll监听操作。

html{    position: relative;    width: 100%;    height: 100%;    overflow: hidden;}body{    position: fixed;    top: 0;    left: 0;    width: 100%;    height: 100%;    overflow: auto;    -webkit-overflow-scrolling: touch;}

问题2:

ios中点击,通过display=block或.show()显示元素会跳转顶部。

解决方法:将元素设置为visibility:hidden,通过改变值为"visible"显示元素。

问题3:

ios微信中,iframe下长按二维码识别不了。

原因:iframe受微信的安全限制,阻止了默认事件,也可能是父子窗口的原因。

解决思路:看其他文章说可以在iframe中的二维码被按下touchstart的时候,将二维码地址推送至父页面。

父页面接收到二维码识别的请求,则创建一个不可见的img元素,src为刚刚传输过来的二维码地址,并且二维码置顶铺满整个屏幕。

在touchend与touchcancel时,通知父窗体删除二维码。(具体没有尝试过)

本文完〜

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值