zoukankan      html  css  js  c++  java
  • fastclick插件 导致 input[type="date"] 无法触发问题解决方案

    鄙人才疏学浅,新人一枚,不足之处还请谅解,写下这个也只是为了给大家分享一下我解决这个BUG的方法,也是自己的一个笔记。

    首先,我们使用fastclick插件的初衷是解决“tap”事件“点透”的BUG;fastclick与tap都是利用“touch”事件来模拟“click”事件的;

    然后我们来大致的了解一下fastclick的工作原理(来自网上的copy):

    在我们的app中跟踪所有的TouchStart事件,在接收到touchend事件的时候,触发一个click事 件;

    使用方法可找度娘;

    但是问题来了,当使用了fastclick的时候,我们发现“日期”控件无法被触发了,是正常的点击时无法被触发,如果长按0.5S的样子还是可以触发的,但是问题还是已经存在,必须解决!

    通过阅读fastclick的源码发现里面有个这个方法

    /**
    * On touch end, determine whether to send a click event at once.
    *
    * @param {Event} event
    * @returns {boolean}
    */
    FastClick.prototype.onTouchEnd = function(event) {

    反正意思在上面也提到过,就是在接受到touchend事件的时候,触发一个click事件;

    那么我的解决方法就是:

    当touchend的时候我们判断一下他的event.target到底是啥,如果是date我们就不玩了,不要你fastclick了,用原生的去触发不就OK了,来个return false;

    我的代码:

    FastClick.prototype.onTouchEnd = function(event) {

      /*加上这个*/

      if(event.target.hasAttribute("type") && event.target.getAttribute("type") == "date"){
        return false;
      }

    这里if里面的条件就随便写咯,自己根据项目需求而定,反正你要的是到达某个特殊的条件时给他退出就好了;

    鄙人才疏学浅,新人一枚,不足之处还请谅解,写下这个也只是为了给大家分享一下我解决这个BUG的方法,也是自己的一个笔记。

    !!转载还请确保是最新版本,谢谢

  • 相关阅读:
    三款主流静态源代码安全检测工具比较
    原生JS封装ajax以及request
    vue生命周期
    微信 jssdk 逻辑在 vue 中的运用
    JS数组中的indexOf方法
    React和Vue中,是如何监听变量变化的
    Vue2学习小记-给Vue2路由导航钩子和axios拦截器做个封装
    VUE使用中踩过的坑
    Vue系列(一):简介、起步、常用指令、事件和属性、模板、过滤器
    Vue系列(二):发送Ajax、JSONP请求、Vue生命周期及实例属性和方法、自定义指令与过渡
  • 原文地址:https://www.cnblogs.com/AlexBlogs/p/4947019.html
Copyright © 2011-2022 走看看