详细问题描述
[内容]
情况一,当应用打开窗体后,切换到后台或其它应用后,大约几分钟再切回来(如果应用没有重启),回到当时打开窗体的状态时,会在plusready代码中出现无法获取当前窗体的情况。
plus.webview.currentWebview(); plus.navigator.getStatusBarStyle(); 都无法取到值。通过测试确认已经触发了plusready 事件
2.情况二,在使用QQ微信登录后注销再登录之后也会出现情况一的问题。 openWindow还是能正常执行,但是每个页面的plusready 中的plus.webview.currentWebview(); plus.navigator.getStatusBarStyle(); 都取不到值。把应用切到后台再切回来,这些问题又正常了。
重现步骤
[步骤]在个人中心右上角设置图标,进入系统设置页面,里面有登录 按钮,点击登录选择QQ登录,然后回来退出登录再登录使用微信登录 。再一步一步回到个人中心,然后再打开设置页面,如果没有出现问题,则重复步骤再尝试。 这是最容易复现的方式。 情况一的问题,偶尔才会出现。很难重现。
[结果]
当前页面的plusready 事件触发后的
plus.webview.currentWebview(); plus.navigator.getStatusBarStyle(); 方法都无法正确取到值。
[期望]
运行环境
[系统版本]
[浏览器版本]
[IDE版本]
[mui版本]
附件
[代码片段]
1.edupay.js 封装弹出窗体和处理样式的代码
在个人中心页面通过
var tmplWV=edupay.createWebView('../home/login.html','home-login',{},{},true);
tmplWV.addEventListener('close',function(){
showBtn();
},false);
tmplWV.show('pop-in',350,function(){
});
创建窗体并打开
2.被打开窗体引用了edupay.js 此js默认监听了plus.ready事件
document.addEventListener('plusready',function(){
mui.alert(window.location.href+":::::::::::plusready执行");
owner.updateLayerStyle();
},false);
然后执行
owner.updateLayerStyle=function(){
if(mui.os.android)
return;
//解决应用待机恢复后有时候plusready中plus+操作无效的情况
var currentWV=plus.webview.currentWebview();
//特殊原因未取到当前窗体对象时通过url参数处理
if(currentWV==null){
mui.alert(window.location.href+"::::::updateLayerStyle2:::currentWV==null");
var openerstatusbarstyle=owner.getQueryString("openerstatusbarstyle");
if(openerstatusbarstyle!=null && openerstatusbarstyle!=""){
mui.alert(window.location.href+"::::::updateLayerStyle2:::父状态栏::"+openerstatusbarstyle);
var statusbarstyle=owner.getQueryString("statusbarstyle");
mui.alert(window.location.href+"::::::updateLayerStyle2:::子状态栏::"+statusbarstyle);
if(statusbarstyle!=null && statusbarstyle!="" && statusbarstyle!=openerstatusbarstyle){
//更新状态栏
plus.navigator.setStatusBarStyle(statusbarstyle);
//调整样式
_updateLayerStyle();
}
}else{
//子窗体不用调整自身样式
console.log("子窗体沉浸模式下不需要调整自身样式");
}
}else{
if(currentWV.parent()){
console.log("子窗体沉浸模式下不需要调整自身样式");
return;
}else{
if(currentWV.statusbarstyle && currentWV.statusbarstyle!=currentWV.openerstatusbarstyle){
plus.navigator.setStatusBarStyle(currentWV.statusbarstyle);
}
//调整样式
_updateLayerStyle();
}
}
}
[安装包]
联系方式
[QQ]42500837
[电话]15001762770
0 个回复