主界面: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 18:16
周羊羊
几个子页面的js代码是同时运行的 还是一个页面执行完了再执行下一个?
每个子页面console.log一些信息,控制台里看到有时候是第一个子页面先console.log,有时候是最后一个页面的先console.log
2016-08-24 15:43