wclssdn
wclssdn
  • 发布:2016-08-10 22:01
  • 更新:2016-09-18 10:19
  • 阅读:3188

【已解决】webview方式的标签页,部分页面不能下拉刷新

分类:MUI

详细问题描述
使用上下两个webview的方式组织一个标签页,最下方webview有几个按钮,用于切换上方的webview。
默认展示的那个webview可以进行下拉刷新操作。其他的webview无法进行下拉刷新操作。
但是,所有的webview都可以进行上拉加载操作。

附件中就是最简单的重现代码,可直接运行重现。

通过chrome的inspect,打开不能下拉刷新的webview,在console中执行html5+的方法,就可以实现下拉刷新。所以应该是mui封装的bug。
代码:

    ws=plus.webview.currentWebview();  
    ws.setPullToRefresh({support:true,  
        height:"50px",  
        range:"200px",  
        contentdown:{  
            caption:"下拉可以刷新"  
        },  
        contentover:{  
            caption:"释放立即刷新"  
        },  
        contentrefresh:{  
            caption:"正在刷新..."  
        }  
    },function(){  
        plus.nativeUI.toast("下拉可以刷新了。。。");  
    });

重现步骤
[步骤]
[结果]
只有首个标签页可以下拉刷新,其他标签页不能下拉刷新
[期望]
所有标签页均可下拉刷新

运行环境
[系统版本]
android 5.1
[浏览器版本]

[IDE版本]
7.3.2.201607212211
[mui版本]
v3.0.0

附件
[代码片段]

            mui.init({  
                keyEventBind: {  
                    backbutton: false  
                },  
                pullRefresh: {  
                    container: '#main',  
                    down: {  
                        callback: function() {  
                            plus.nativeUI.toast('down');  
                            setTimeout(function(){  
                                mui('#main').pullRefresh().endPulldownToRefresh();  
                            }, 1000);  
                        }  
                    },  
                    up: {  
                        callback: function() {  
                            plus.nativeUI.toast('up');  
                            setTimeout(function(){  
                                mui('#main').pullRefresh().endPullupToRefresh(false);  
                            }, 1000);  
                        }  
                    }  
                }  
            });

[安装包] 见附件

联系方式
[QQ] 88596443
[电话]

2016-08-10 22:01 负责人:无 分享
已邀请:
wclssdn

wclssdn (作者)

补充一下, ios是可以下拉的。。 只有安卓不行 。

wclssdn

wclssdn (作者)

怎么没有官方的人关心bug?

Trust

Trust - 少说废话

下拉刷新Android和iOS的机制不同,mui对此做了封装。
父子页面形式的下拉刷新是没有问题的。
Android下如果需要使用单个页面的下拉刷新,请参照Hello mui示例中的pull_refresh_with_tab.html

  • wclssdn (作者)

    我提供的例子是可重现bug的。其中的逻辑是,下边的webview是父页面,上边的四个是子页面,第一个是默认展示出来的。 其他的是默认不展示,只有点击才展示,但是,也是子页面(append上去的)。满足了父子页面的逻辑,为什么还不行?

    2016-08-23 12:29

Trust

Trust - 少说废话

并不是bug,依据您提供的代码。始终只是将第一个窗口对象添加至父窗口。
依据以下代码测试可知

mui('#bar').on('tap', 'a', function(e) {  
    if (current == this.dataset.id) {  
        return;  
    }  
    tabs[this.dataset.id].show();  
    tabs[current].hide();  
    current = this.dataset.id;  
    console.log(self.children().length);  
});  

self.children().length的值,始终为1,也就是说,子窗口始终为一个,所以配置的下拉才会失效。
应该是缺少,判定目标窗口对象,是否已经添加至父窗口的逻辑,请仔细检查并补充代码。

  • wclssdn (作者)

    好吧~ 不好意思~ 哈哈,忘记这事儿了~ 这又涉及了另外一个问题。。。 如果我每个tab页面都append到底部的导航条webview上的话,怎么控制第一展示,其他的不展示呢。如果直接修改为所有的都append到导航条webview,则所有的都是展示状态。。。

    2016-08-24 10:55

  • Trust

    回复 wclssdn:判定一下,是第一个就show,不是的就hide起来。可以看下webview相关的文档。

    2016-08-24 10:57

  • wclssdn (作者)

    回复 Trust:我之前试过,只要append上去, 就自动show了~ 有空我再试试吧~ 谢谢~

    2016-08-25 10:19

wclssdn

wclssdn (作者)

解决了~

创建webview后,先hide,再append到父webview,就不会有问题了~ 多谢 @DCloud_客服_Trust

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