mui下拉刷新页面click和a标签失效问题
本文由 小茗同学 发表于 2016-07-20 浏览(6824)
最后修改 2016-07-22 标签:mui 移动端 手机 下拉刷新 click 失效 pullRefresh

问题描述

使用了mui的下拉刷新(pullRefresh)的页面会出现A标签的href失效,且其它注册了click的元素也会失效,点击没反应。

原因

官方的解释是:2.1版本为了修复safari下下拉刷新时偶尔触发整个页面拖动的问题,使用了preventDefault。这样会阻止默认click的触发。

详见:http://ask.dcloud.net.cn/question/8894

解决办法

解决办法有2种,一种是所有的click改用mui自带的tap来实现,另外一种方法就是修改它的源码,把那个阻止默认事件触发的那行代码注释掉,不知道会不会带来其它一些问题,反正目前是没碰到。

找到mui-v2.7.0版的4221行,PullRefresh._start方法里面:

    var PullRefresh = $.Scroll.extend($.extend({
        // 省略部分代码
        _start: function(e) {
            //仅下拉刷新在start阻止默认事件
            if (e.touches && e.touches.length && e.touches[0].clientX > 30) {
                //TODO update by lxa 坑爹的mui,下拉刷新中的A标签会失效,因为这里有一个e.preventDefault,所以只能暂时注释
                // 官方的解释是:2.1版本为了修复safari下下拉刷新时偶尔触发整个页面拖动的问题,使用了preventDefault。这样会阻止默认click的触发。
                // 详见:http://ask.dcloud.net.cn/question/8894
                //e.target && !this._preventDefaultException(e.target, this.options.preventDefaultException) && e.preventDefault();
            }
            if (!this.loading) {
                this.pulldown = this.pullPocket = this.pullCaption = this.pullLoading = false
            }
            this._super(e);
        }
        // 省略部分代码
    }, $.PullRefresh));