maisv
maisv
  • 发布:2017-08-03 17:48
  • 更新:2018-07-04 10:39
  • 阅读:1981

【报Bug】调用scrollToBottom就会出现两个滚动条

分类:MUI

详细问题描述
上拉加载下拉刷新的功能调用scrollToBottom就会出现两个滚动条。

重现步骤

<!DOCTYPE html>  
<html>  

    <head>  
        <meta charset="utf-8">  
        <title>Hello MUI</title>  
        <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">  
        <meta name="apple-mobile-web-app-capable" content="yes">  
        <meta name="apple-mobile-web-app-status-bar-style" content="black">  
        <link rel="stylesheet" href="../css/mui.min.css">  
    </head>  

    <body>  
        <!--下拉刷新容器-->  
        <div id="pullrefresh" class="mui-content mui-scroll-wrapper">  
            <div class="mui-scroll">  
                <!--数据列表-->  
                <ul class="mui-table-view mui-table-view-chevron">  

                </ul>  
            </div>  

        </div>   
        <nav id="footerBar" class="mui-bar mui-bar-tab" style="padding: 0px; ">  
            <div class="mui-row" style="border: 0px solid;">  
                <div class=" mui-col-xs-8 mui-col-sm-8" data-numbox-min="5" style="text-align: center;padding-top: 15px; ">  
                </div>  
                <div class=" mui-col-xs-4 mui-col-sm-4 mui-btn-success" style="height:50px;text-align: center;padding-top: 15px; ">  
                    <div class="mui-media-body" style="color:#fff; " onclick="scrollit()">滚动</div>  
                </div>  
            </div>  
        </nav>  
        <script src="../js/mui.min.js"></script>  
        <script>  
            mui.init({  
                pullRefresh: {  
                    container: '#pullrefresh',  
                    down: {  
                        callback: pulldownRefresh  
                    },  
                    up: {  
                        contentrefresh: '正在加载...',  
                        callback: pullupRefresh  
                    }  
                }  
            });  
            /**  
             * 下拉刷新具体业务实现  
             */  
            function pulldownRefresh() {  
                setTimeout(function() {  
                    var table = document.body.querySelector('.mui-table-view');  
                    var cells = document.body.querySelectorAll('.mui-table-view-cell');  
                    for (var i = cells.length, len = i + 3; i < len; i++) {  
                        var li = document.createElement('li');  
                        li.className = 'mui-table-view-cell';  
                        li.innerHTML = '<a class="mui-navigate-right">Item ' + (i + 1) + '</a>';  
                        //下拉刷新,新纪录插到最前面;  
                        table.insertBefore(li, table.firstChild);  
                    }  
                    mui('#pullrefresh').pullRefresh().endPulldownToRefresh(); //refresh completed  
                }, 1500);  
            }  
            var count = 0;  
            /**  
             * 上拉加载具体业务实现  
             */  
            function pullupRefresh() {  
                setTimeout(function() {  
                    mui('#pullrefresh').pullRefresh().endPullupToRefresh((++count > 2)); //参数为true代表没有更多数据了。  
                    var table = document.body.querySelector('.mui-table-view');  
                    var cells = document.body.querySelectorAll('.mui-table-view-cell');  
                    for (var i = cells.length, len = i + 20; i < len; i++) {  
                        var li = document.createElement('li');  
                        li.className = 'mui-table-view-cell';  
                        li.innerHTML = '<a class="mui-navigate-right">Item ' + (i + 1) + '</a>';  
                        table.appendChild(li);  
                    }  
                }, 1500);  
            }  
            if (mui.os.plus) {  
                mui.plusReady(function() {  
                    setTimeout(function() {  
                        mui('#pullrefresh').pullRefresh().pullupLoading();  
                    }, 1000);  

                });  
            } else {  
                mui.ready(function() {  
                    mui('#pullrefresh').pullRefresh().pullupLoading();  
                });  
            }  

            function scrollit(){  
                mui('#pullrefresh').scroll().scrollToBottom(100);  
            }  
        </script>  
    </body>  

</html>

复制上面的代码到hbuilder里面运行,点击滚动按钮。

2017-08-03 17:48 负责人:无 分享
已邀请:
爆栈工程师

爆栈工程师 - 爆栈工程师

隐藏滚动条试试

  • maisv (作者)

    他实际上并不是真正的滚动条

    2017-08-04 09:45

maisv

maisv (作者)

千年梦寻

千年梦寻

我也遇到这个问题了,这个BUG应该是调用scrollToBottom产生的BUG,默认初始化会有一个滚动条,调用scrollToBottom又产生一个,我处理方式是隐藏第一个滚动条,用以下代码段就行解决

.hide{  
    display: none!important;  
}
var scrollbar = mui(".mui-scrollbar");  
                if(scrollbar && scrollbar.length>1){  
                    scrollbar[0].classList.add("hide");  
                }
  • c***@163.com

    隐藏了没用呀,隐藏了他实际还是存在的

    2018-07-04 12:49

  • 千年梦寻

    回复 c***@163.com:我这边隐藏了之后,不会再显示了。。。如果不行的话,强制删除第一个

    2018-07-04 13:49

  • 千年梦寻

    回复 c***@163.com:还有一种情况,可能是启动了第一次进入时自动下拉或者自动上拉,滚动条生成了3个

    2018-07-04 13:50

该问题目前已经被锁定, 无法添加新回复