这个问题困扰了超级长的一段时间,终于终于在今天解决了
- 现象:ios点击输入框之后没反应,需要多次点击或者长按一会儿才能唤起软键盘,经过查阅,发现应该是fastclick.js 引起的冲突,ios11 后修复了移动点击300ms延迟,所以ios 11 及以上版本会有这个问题
- 解决方法
- 1、在node_module里找到fastClick.js文件,然后找到focus方法
- 在focus 方法里的 if 语句中添加一下代码
targetElement.focus();
- 2、在main.js中添加
// 解决 input、textarea 获取焦点不灵敏的问题 // 原因:fastclick.js 引起的冲突,ios11 后修复了移动点击300ms延迟 const str= navigator.userAgent.toLowerCase() const ver=str.match(/cpu iphone os (.*?) like mac os/) if(ver && parseInt(ver[1]) > 10){//IOS系统 // 引入fastclick 做相关处理 if (typeof FastClick.prototype.focus === 'function') { var oldFocusFn = FastClick.prototype.focus FastClick.prototype.focus = function(targetElement) { oldFocusFn() if (deviceIsIOS && targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time' && targetElement.type !== 'month') { targetElement.focus() } }; } else { FastClick.prototype.focus = function(targetElement) { if (deviceIsIOS && targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time' && targetElement.type !== 'month') { length = targetElement.value.length; targetElement.setSelectionRange(length, length); targetElement.focus() } else { targetElement.focus(); } } } }