一个大老鼠
我也遇到过这个问题,你不应该用mui.openWindow()打开index.html,而是应该用主窗口里面的事件,进行切换,看tab-webview-main.html的这段代码:
----------------------------------------------------
//自定义事件,模拟点击“首页选项卡”
document.addEventListener('gohome', function() {
var defaultTab = document.getElementById("defaultTab");
//模拟首页点击
mui.trigger(defaultTab, 'tap');
//切换选项卡高亮
var current = document.querySelector(".mui-bar-tab>.mui-tab-item.mui-active");
if (defaultTab !== current) {
current.classList.remove('mui-active');
defaultTab.classList.add('mui-active');
}
});
-------------------------------------------
其他页面如果要切换到首页的话,应该触发首页的gohome事件:
document.getElementById("about").addEventListener('tap',function () {
//获得主页面的webview
var main = plus.webview.currentWebview().parent();
//触发主页面的gohome事件
mui.fire(main,'gohome');
});
--------------------------------------------
如果你只需要切换到首页tabbar的第一个页面的话,你看到这里就够了;
---------------------华丽的分割线------------------------------------
但是我的需求是随时切换到首页4个tabbar的任意一个,于是我对这个事件做了一些改造:现在把他贴出来,欢迎指正学习:
首先在tab-webview-main.html中注册一个自定义事件
-------------------------------------------------
//自定义事件,模拟点击“某一个选项卡”,从而实现首页选项卡切换
document.addEventListener('tabSwith', function(event) {
//获得参数
var detail=event.detail;
var id=detail.id;
var gotab = document.getElementById(id);
//模拟首页点击
mui.trigger(gotab, 'tap');
//切换选项卡高亮
var current = document.querySelector(".mui-bar-tab>.mui-tab-item.mui-active");
if (gotab !== current) {
current.classList.remove('mui-active');
gotab.classList.add('mui-active');
}
});
-----------------------------------------------------
然后在全局的js文件common.js中,添加一个方法,这个方法是扩展到w上的(w表示window)
/**
* 跳转到首页
* 参数默认为0(首页tab bar 的第一个子页面)
* */
w.toIndex = function(i) {
//设置默认值为0
var i = i || 0;
var idArr=["defaultTab","goInvest","goMy","goMore"];
var main = plus.webview.getWebviewById("main"); //这里可能返回空;详见官方文档说明
//显示首页
console.log("应用首页,并且切换到对应的选项卡");
mui.fire(main,'tabSwith',{id:idArr[i]});
main.show();
};
然后我就可以在任何页面(前提是引入了全局的common.js文件),直接调用toIndex(0);(这里的参数是idArr数组中对应的下表,根据ID 进行跳转),然后实现华丽的跳转到首页的任意一个tabbar了,哈哈
-------------------------------------------------------
这里(ˇˍˇ) 向大神请教一个问题,就是这样切换去的tabbar,无法进行时时刷新,应为webview是从缓存中拿出来的,其中的数据不能实时更新,请问如何解决这个问题??
2015-06-24 09:37