兼容性ios、安卓值input 以及fixed

本文探讨了iOS和Android系统中输入框上滑机制的区别,以及由此引发的兼容性问题。在iOS中,键盘弹起时可视窗口向上顶,而Android则缩小可视窗口。对于iOS的输入框被遮挡问题,作者提供了添加事件监听的解决方案,而在Android端,`document.activeElement.scrollIntoViewIfNeeded()`方法通常有效,但可能需要针对特定场景调整。文章还分享了部分代码示例来解决键盘收起后的页面滚动问题。

 1.好久没解决兼容性的问题了。

研究了ios系统的上滑机制和安卓的上滑机制他是不一样的;

ios:是可视窗口向上顶上去了。

安卓:是可视窗口缩小了。

fixed定位ios只能依靠客户端了。这里不想多说啥。js解决不了。除非改造系统去吧。

 首先判断ios安卓机型代码如下:

var ua = window.navigator.userAgent.toLocaleLowerCase();

var isIOS = /iphone|ipad|ipod/.test(ua);

var isAndroid = /android/.test(ua);

ios存在问题:场景:一个页面有好多个input框;input拉起软键盘 - 收起的时候,input框会被遮挡。

 经过反复自测:得出的结论

下面的$input是document.querySelectorAll('.ininput');
var u = navigator.userAgent;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
 
var oldh = 0;//初始化scrollTop位置
if (!isAndroid) {
 // IOS 键盘弹起:IOS 和 Android 输入框获取焦点键盘弹起
  $input.addEventListener('focus', function () {
      console.log('IOS 键盘弹起啦!');
      oldh = document.documentElement.scrollTop || document.body.scrollTop || 0;//
 }, false)

 // IOS 键盘收起:IOS 点击输入框以外区域或点击收起按钮,输入框都会失去焦点,键盘会收起,
 $input.addEventListener('blur', () => {
    console.log('IOS 键盘收起啦!'); 
    // IOS 键盘收起后操作
    setTimeout(() => { 
         const scrollHeight = document.documentElement.scrollTop || document.body.scrollTop || 0;
        var jp = scrollHeight-oldh;
        window.scrollTo(0, document.documentElement.scrollTop-jp);
    }, 500); 
  })
 }

 

微信ios中:拉起软键盘回复到原位置的问题网络上是这么描述的我这里不是很赞同,这里其实是解决当软键盘收起之后输入框下面的留白用这个可以解决:

$("input,select").blur(function(){

  setTimeout(function(){ 
    
  const scrollHeight = document.documentElement.scrollTop || document.body.scrollTop || 0;

      window.scrollTo(0, Math.max(scrollHeight - 1, 0));

    }, 100
 );

})

 

接下来说说安卓的,安卓:键盘拉起可视窗口会变小。

场景:拉起输入框的时候会被遮挡。

查看了网上的说法也是用:document.activeElement.scrollIntoViewIfNeeded();

 还是可用的,但是针对一些特殊的场景还是需要根据实际情况加工一下的。

 

在前端开发中,iOS安卓系统存在多种兼容性问题,主要分为JavaScript、CSS和HTML方面: - **JavaScript兼容问题**:包括iOS日期的兼容、iOS的beforeunload事件的兼容、Android下点击input框键盘将页面顶起、iOS点击input框键盘将底部按钮顶起(正常需隐藏底部按钮)、iOS键盘收起页面底部出现空白问题,以及Android和iOS下表单的input事件和change事件的差异等 [^3]。 - **CSS兼容问题**:有iOSinput框聚焦时出现outline或者阴影、Android和iOS下设置input框禁止选择内容、iOS改变input框的默认placeholder属性样式、iOSinput框输入的内容偏上、Android下line - height和height的兼容、iOS下解决 “input按钮” 样式会被默认样式覆盖的问题、iOS下阻止图片在微信里被点击放大、Android下margin - top失效、Android下页面出现横向滚动条(iOS正常)、Android下给页面设置fixed固定定位无效(iOS正常)、iOS适配底部小横条(Android机上也可调出)、iOS中字体加粗无效(Android正常)、iOS下拉页面时自定义的头部导航栏消失等 [^3]。 - **HTML兼容问题**:例如iOS下会将数字当成电话号码,导致变色 [^3]。 此外,在系统层面,安卓系统新版本发布后有兼容过渡期,需解决旧版应用在新系统上的兼容性问题,开发者要进行应用兼容性测试、修复和改进,以确保应用流畅运行。移动端常见的兼容性问题如滚动条卡顿、圆角bug、input样式覆盖等也需要相应解决方案来优化用户体验 [^2]。 ```javascript // 判断是安卓还是IOS的方法 // 获取浏览器的userAgent,并转化为小写 var ua = navigator.userAgent.toLowerCase(); // 判断是否是苹果手机,是则是true var isIos = (ua.indexOf('iphone') != -1) || (ua.indexOf('ipad') != -1); if (isIos) { // 做苹果手机兼容 } else { // 做安卓手机兼容 } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值