ios移动端input输入框卡顿,失焦,弹不出软键盘

这篇博客主要讨论了在Vue项目中引入fastclick库后,遇到iOS设备上input输入框卡顿和失焦的问题。作者提供了修改main.js文件的解决方案,通过修改fastclick的focus方法,兼容了iOS设备特别是针对date、datetime、month等类型的输入框,确保在修复页面迟钝问题的同时,避免了输入框交互异常,保证了软键盘的正常弹出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当前是个vue项目,我之前在项目引入fastclick,导致出现了ios移动端input输入框卡顿,失焦,弹不出软键盘
因此可在main.js文件做修改

//---------------原来引入
import FastClick from 'fastclick'
FastClick.attach(document.body);

//-------------现在修改-----------------
//原fastclick视为了解决页面迟钝,现解决fastclick带来引入后导致输入框失焦,
FastClick.prototype.focus = function (targetElement) {
  var length;

  var deviceIsWindowsPhone = navigator.userAgent.indexOf("Windows Phone") >= 0;
  var deviceIsIOS = /iP(ad|hone|od)/.test(navigator.userAgent) && !deviceIsWindowsPhone;  
    //兼容处理:在iOS7中,有一些元素(如date、datetime、month等)在setSelectionRange会出现TypeError    
    //这是因为这些元素并没有selectionStart和selectionEnd的整型数字属性,所以一旦引用就会报错,因此排除这些属性才使用setSelectionRange方法
  if ( deviceIsIOS && targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time' && targetElement.type !== 'month' && targetElement.type !== 'email') { 
    length = targetElement.value.length; 
    targetElement.setSelectionRange(length, length);//修复bug ios 11.3不弹出键盘,这里加上聚焦代码,让其强制聚焦弹出键盘    
    targetElement.focus(); 
  } else { 
    targetElement.focus(); 
  }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值