问题描述
使用了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));