dcloudio / mui

最接近原生APP体验的高性能框架
https://dev.dcloud.net.cn/mui/
MIT License
13.49k stars 6.56k forks source link

mui下拉刷新里阻止了页面里的A链接正常跳转 #254

Open AlexStacker opened 8 years ago

AlexStacker commented 8 years ago

事发js: mui.class.scroll.pullrefresh.js

_start: function(e) {
            //仅下拉刷新在start阻止默认事件
            if (e.touches && e.touches.length && e.touches[0].clientX > 30) {
                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);
        },

Web端在结合mui-table-view,上面//仅下拉刷新在start阻止默认事件这段代码会导致里面的a链接失效。一时不知道怎么去解决,现在的做法是在需要下拉刷新的页面里,mui.init的时候设置preventDefaultException标示link-开头的class给跳转

mui.init({
    pullRefresh: {
        container: '#pullrefresh',
        preventDefaultException: {
            className: /^mui-/
        }
    }
});

这样做只能临时解决,有没有更好的官方的解决办法。

qiguoqiang commented 8 years ago

发现了类似的问题,_start这个函数在下拉加载的时候也会调用,导致把列表上的按钮事件阻止了,我把这个函数里的阻止默认事件那段给去掉,暂时没什么问题,希望可以修复下这个问题

ghost commented 7 years ago

mui相关的一些控件是通过拦截a标签上的href来实现的,所以会阻止href的跳转。统一使用js进行事件监听,使用事件委托会更好一些。