ios11.3下fastClick相关bug

首先了解一下加入faskclick这个库解决的问题:

  • click 300ms延迟:浏览器click会比touch延迟300ms触发
  • click穿透现象:当两个div同处一个position,上层div绑定touch,下层div绑定click,当上层div触发touch消失后,可能会触发下层div的click事件

bug描述:在页面浮层中,存在输入框,在使用fastClick后,导致输入框难以focus

解决方案:

import FastClick from 'fastclick'
import Helper from '@/util/helper'

FastClick.prototype.focus = function(targetElement) {
    var length;
    //兼容处理:在iOS7中,有一些元素(如date、datetime、month等)在setSelectionRange会出现TypeError
    //这是因为这些元素并没有selectionStart和selectionEnd的整型数字属性,所以一旦引用就会报错,因此排除这些属性才使用setSelectionRange方法
    if (Helper.UA.isIos && 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();
    }
};

export default FastClick

参考资料:iOS11.3 fastclick.js相关bug剖析

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近遇到奇异的bug,在ios 11.3移动端页面 input输入框第一次触摸可以弹起键盘,后续再触摸需要很难弹起...
    邱疯子阅读 13,630评论 13 18
  • 相关知识点 移动端、 适配(兼容)、 ios点击事件300ms延迟、 点击穿透、 定位失效...... 问题&解决...
    sandisen阅读 25,749评论 3 67
  • 移动页面点击穿透问题解决方案 一.click与300ms延迟 移动浏览器提供一个特殊的功能:双击(double t...
    程序员之路阅读 9,228评论 0 2
  • AMD 和 CMD 的区别有哪些?AMD 是 RequireJS 在推广过程中对模块定义的规范化产出。CMD 是 ...
    竿牍阅读 3,968评论 0 1
  • 有点意思,这个必须转!【精辟得一塌糊涂】 【1岁】我就是不讲话,不让大人们轻易知道我在想什么。哼哼。 ...
    古墓道人阅读 1,553评论 0 0