解决iphone下选中input页面自动放大的问题

今天接到了一个bug,客户的手机站在iPhone下选中搜索框时页面会自动变大,导致页面变形。客户希望我们能解决这个问题。

网上搜索了一下,大部分的答案是通过meta便签禁用页面缩放功能,代码如下:

<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>

但是有个不方便的地方,就是我们的页面需要客户可以手动放大,如果你需要用户可以缩放页面,又希望选中搜索框不自动放大,该如何呢?经过几番思考和测试,终于找到了方案。代码如下:

<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=3.0,user-scalable=yes"/> 
 var u = navigator.userAgent;
          var isIos=u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1;
	   if(isIos) {
            $('input[name="keywords"]').focus(function(e){
                var mviewport;
                var metas = document.getElementsByTagName('meta')||[];
                for(var i in metas){
                  var meta = metas[i]||{},mtname = meta.name||"";
                  if (mtname.toLowerCase() == "viewport") {
                    mviewport = meta;break;
                  }
                }
                if(mviewport){
                    var metacontent=mviewport.content;
                    if(metacontent && metacontent.replace){
                        mviewport.content=metacontent.replace('user-scalable=yes','user-scalable=no');
                        setTimeout(function(){
                            mviewport.content=metacontent;
                        },2000)
                    }
                }
            })
         }    

 

转载于:https://my.oschina.net/jamesren/blog/865515

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值