在写vue移动端时,因为项目用前端混合式开发,在ios手机会有300ms的延迟,所以用到了fastclick.js
按照官方的说明,直接引用,如下

if ('addEventListener' in document) {
	document.addEventListener('DOMContentLoaded', function() {
		FastClick.attach(document.body);
	}, false);
}

但是最后测试发现在某些ios上,点击输入框想调起软键盘,触点不是很灵敏,必须重压或长按才能成功调起。

最后发现 应该是 fastclick.js 引起的,不过 ios11 后修复了移动点击300ms延迟。

最后搞开源码,修复了这个问题,如下:

  • 在node_module里找到fastClick文件,然后找到focus方法
/**
  * @param {EventTarget|Element} targetElement
  */
 FastClick.prototype.focus = function(targetElement) {
     var length;

     // Issue #160: on iOS 7, some input elements (e.g. date datetime month) throw a vague TypeError on setSelectionRange. These elements don't have an integer value for the selectionStart and selectionEnd properties, but unfortunately that can't be used for detection because accessing the properties also throws a TypeError. Just check the type instead. Filed as Apple bug #15122724.
     if (deviceIsIOS && targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time' && targetElement.type !== 'month' && targetElement.type !== 'email') {
         length = targetElement.value.length;
         targetElement.focus();//加入这一句话就OK了
         targetElement.setSelectionRange(length, length);
     } else {
         targetElement.focus();
     }
 };

其实加上 focus 就可以了。

targetElement.focus(); // 加入这一句话就OK了

觉得有用的小伙伴右上角点个赞支持下~在这里插入图片描述

扫描上方二维码关注我的订阅号~

Logo

前往低代码交流专区

更多推荐