老贪嗔痴
老贪嗔痴
  • 发布:2016-01-18 13:02
  • 更新:2017-11-23 16:09
  • 阅读:2464

启动界面用openWindow打开main,先显示了main的头部和底部,但中间的数据home.html读取很慢

分类:MUI

主界面:main。有四个子页面,其中home.html和user.html。现在问题是每次从启动界面index.html用mui.openWindow()打开main.html,打开都非常缓慢(先显示了main的头部和底部,但中间的数据home.html读取很慢)。这个有什么好的解决方法吗?求助,谢谢

主界面代码如下:
<body>

<!-- 1页面标题栏16ac3a  -->  
<header class="mui-bar mui-bar-nav" style="background-color: #007aff;">  
    <h1 id="maintitle" class="mui-title" style="color: #FFFFFF;">  
        <strong>乐悠悠</strong></h1>  
    <a id="sideMenu" class="mui-icon mui-icon-bars mui-pull-right" style="color: #FFFFFF;"></a>  
</header>  

<!-- 2主界面选项卡 -->  
<nav class="mui-bar mui-bar-tab" style="margin-top: 3px;">  
    <a id="defaultTab" class="mui-tab-item mui-active" href="page/home.html">  
        <span class="mui-icon mui-icon-home"></span>  
        <span class="mui-tab-label">首页</span>  
    </a>  
    <a class="mui-tab-item" href="page/home.html">  
        <span class="mui-icon mui-icon-contact"></span>  
        <span class="mui-tab-label">专题</span>  
    </a>  
    <a class="mui-tab-item" href="page/home.html">  
        <span class="mui-icon mui-icon-email"><span class="mui-badge">6</span></span>  
        <span class="mui-tab-label">消息</span>  
    </a>  
    <a class="mui-tab-item" href="page/user.html">  
        <span class="mui-icon mui-icon-gear"></span>  
        <span class="mui-tab-label">我的</span>  
    </a>  
</nav>  

</body>

<script type="text/javascript" charset="utf-8">

// 主窗口和侧滑窗口  
var vmain = null,  
    menu = null;  
// 设置一个中间量,用于判定动画效果开始  
var isInTransition = false;  
// 设置变量用于判定侧滑窗口的打开/关闭状态  
var showMenu = false;  

//mui初始化  
mui.init();  
var subpages = ['page/home.html', 'page/home.html', 'page/home.html', 'page/user.html'];              
var aniShow = {};//记录各个选项卡状态              
//创建子页面,首个选项卡页面显示,其它均隐藏;  
mui.plusReady(function() {  
    //---1.获取当前窗口对象  
    vmain = plus.webview.currentWebview();  
    //根据入口不同,隐藏/关闭入口页面index.html  
    //做webview模式的侧滑,上一级的页面会影响侧滑页的zindex;  
    var entrance = vmain.entrance;  
    if (entrance === "login") {  
        vmain.opener().close("none");  
    } else {  
        vmain.opener().hide("none");  
    }  

    //---2.设置子窗口的样式,顶部默认0px,底部默认51px,并且设置窗口无滚动条;  
    var subpage_style = {  
        top: '45px',  
        bottom: '51px',  
        scrollIndicator: "none"  
    };        
    //获取当前窗口对象  
    var wself = plus.webview.currentWebview();  
    for (var i = 0; i < 4; i++) {  
        var temp = {};//数组  
        //创建4个子页面:窗体地址、窗体id、窗体属性(至顶部和底部距离)  
        var sub = plus.webview.create(subpages[i], subpages[i], subpage_style);  
        if (i > 0) {  
            sub.hide();//除了第一个页面其余均先隐藏  
        }else{  
            temp[subpages[i]] = "true";  
            mui.extend(aniShow,temp);//合并对象  
        }  
        wself.append(sub);//添加webview窗口  
    }  

});  

//当前激活选项  
//设中间变量,存储当前处于展示状态窗口的标识(这里用的标识是窗口的相对地址),默认是第一个窗口;  
var activeTab = subpages[0];  
//页面标题  
var title = document.getElementById("maintitle");  
//选项卡mui-bar-tab点击事件  
mui('.mui-bar-tab').on('tap', 'a', function(e) {  
    //获取当前点击的选项目标窗口的标识,比较所选项与处于展示状态窗口的标识进行对比;  
    var targetTab = this.getAttribute('href');  

    //刷新当前页面数据  
    if (targetTab == activeTab) {             
        return;  
    }  

    //改变顶部栏的文字  
    title.innerHTML = this.querySelector('.mui-tab-label').innerHTML;  
    if (title.innerHTML == "首页"){  
        title.innerHTML = "乐悠悠";  
    }  

    //显示目标选项卡,这里要先展示,后隐藏,避免切换慢造成白屏;  
    //若为iOS平台或非首次显示,则直接显示  
    if(mui.os.ios||aniShow[targetTab]){  
        plus.webview.show(targetTab);//要真机调试才不会报错?  
    }else{  
        //否则,使用fade-in动画,且保存变量  
        var temp = {};  
        temp[targetTab] = "true";  
        mui.extend(aniShow,temp);  
        plus.webview.show(targetTab,"fade-in",0);//pop-in  
        //aniShow[targetTab].show("fade-in",300);  
    }  

    //隐藏当前;  
    plus.webview.hide(activeTab);  

    //更改当前活跃的选项卡,选项卡激活颜色变更  
    activeTab = targetTab;  
});  
2016-01-18 13:02 负责人:无 分享
已邀请:
Trust

Trust - 少说废话

首页数据通常都会很多,所以一般都会用一些方法让用户等待数据的加载。关于读取数据的问题,可以自己用等待框,或者提示文本来让用户进行等待。待数据渲染完成后,再展示数据的部分。

  • 老贪嗔痴 (作者)

    那请问有具体代码吗?我是完全新手,谢谢

    2016-01-18 18:16

  • 周羊羊

    几个子页面的js代码是同时运行的 还是一个页面执行完了再执行下一个?

    每个子页面console.log一些信息,控制台里看到有时候是第一个子页面先console.log,有时候是最后一个页面的先console.log

    2016-08-24 15:43

军行天下

军行天下

底部几个tab就需要几个子页面,这样数据太大会造成卡顿不?

fx4399

fx4399 - Android工程师、前端工程师

怎么解决的 能说下代码

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