neotao
neotao
  • 发布:2018-04-18 18:40
  • 更新:2018-04-19 12:11
  • 阅读:4087

Webview渲染的多个子页面之间切换时如何强制刷新?

分类:MUI
mui

我是在页面中通过如下方式渲染页面的,首次打开页面默认加载webview中第一个子页面的内容,之后每次点击tabbar切换到对应子页面。现在出现了问题:当第一次打开页面时候通过tabbar切换子页面是会加载子页面内容的,打开过的子页面切换到别的子页面后再次切换回来就不再刷新了,想请教一下如何强制刷新webview的子页面。

另外还想咨询一个关于这种加载方式的页面跳转的问题,我看plus.webview.open()都是新开窗口,新打开的页面也没有顶部底部的公共区域。且单页面或app中由于性能问题不建议这么做,那通过什么方式可以切换页面?可以在不动顶部底部公共区域的情况下做局部刷新的页面跳转?

var pageIndex = 0;  
mui.plusReady(function() {  
    var self = plus.webview.currentWebview();  
    var sub = plus.webview.create(subpages[pageIndex], subpages[pageIndex], subpage_style);  
    self.append(sub);  

    mui('.mui-bar-tab').on('tap', 'a', function(e) {  
        //当前激活选项  
        var target = this;  
        Global.switchWebview(target);  
    });  
});  

//下面是Global.switchWebview 的方法内容  
switchWebview: function (targetTab) {  
        var targetUrl = targetTab.getAttribute('href');  
        var activeUrl = mui('.mui-active')[0].href;  
        mui('.mui-active')[0].classList.remove("active");  
        targetTab.classList.add("active");  

        //更换标题  
        var title = document.getElementById("title");  
        title.innerHTML = targetTab.querySelector('.mui-tab-label').innerHTML;  
        var sub = plus.webview.create(targetUrl, targetUrl, subpage_style);  
        var currentWebview=plus.webview.currentWebview();  
        currentWebview.append(sub);  

        //隐藏当前;  
        plus.webview.close(activeUrl);  
        plus.webview.show(targetUrl);  
}
2018-04-18 18:40 负责人:无 分享
已邀请:
hylong

hylong

  • neotao (作者)

    我看了下,这是绑定事件的呀。意思是说在这个绑定的事件里面通过代码来达到重新加载吗?我看api中的新闻样例也是通过openWindow来打开详情页面的,这个页面跟我问题中描述的webview渲染当前页面的局部不是一个意思把?

    2018-04-18 22:13

大A

大A

我习惯使用mui.fire

  • neotao (作者)

    这个fire是绑定事件的呀,可以实现页面刷新吗?还有跳转我应该用openwindow还是通过webview的哪个方法来实现?

    2018-04-18 22:17

skysowe

skysowe

强制刷新,我是判断webview是否存在,存在就close,然后再create,show,确保每次都是重新打开webview,不知道是否有更高级的做法

七月_

七月_

监听当前webview是否显示,显示时执行function

大A

大A

var userinfo = getUserInfo();
if(currIndex == 3) {

            if(isNullOrEmpty(userinfo.USERCODE)) {  
                openEMPWindow({  
                    id: 'login.html',  
                    url: '../mine/login.html'  
                });  
            } else {  
                if(currIndex == 3) {  
                    var minePage = plus.webview.getWebviewById('mine.html');  
                    //触发news_center页面刷新数据  
                    mui.fire(minePage, 'refleshMine', {});  
                }  
                //底部选项卡切换  
                util.toggleNview(currIndex);  
                // 子页面切换  
                util.changeSubpage(targetPage, activePage, aniShow);  
                //更新当前活跃的页面  
                activePage = targetPage;  
            }  

        } else {  
            //底部选项卡切换  
            util.toggleNview(currIndex);  
            // 子页面切换  
            util.changeSubpage(targetPage, activePage, aniShow);  
            //更新当前活跃的页面  
            activePage = targetPage;  
        }

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