Terminator0 2019-12-21
在安卓上可以使用
//1.1 var backButtonPress = 0; $.back = function(event) { backButtonPress++; if(backButtonPress > 1) { plus.runtime.quit(); } else { plus.nativeUI.toast(‘再按一次退出应用‘); } setTimeout(function() { backButtonPress = 0; }, 1000); return false; }; //1.2 mui.back = function() { var btn = ["确定", "取消"]; mui.confirm(‘确认关闭当前窗口?‘, ‘Hello MUI‘, btn, function(e) { if(e.index == 0) { plus.runtime.quit(); } }); }
H5+官方文档提供的plus.runtime.quit();对Android有效,但对iOS无效。但实际上,iOS系统原生提供了[[NSThread mainThread] exit];方法可以强制退出当前App,并且H5+支持调用iOS原生类的方法(通过plus.ios.importClass和invoke函数),于是就可以变相实现强制退出iOS的App了,代码如下:
if (mui.os.ios) { const threadClass = plus.ios.importClass("NSThread"); const mainThread = plus.ios.invoke(threadClass, "mainThread"); plus.ios.invoke(mainThread, "exit"); } else if (mui.os.android) { plus.runtime.quit(); }
我自己项目所使用的
document.getElementById("tuic").addEventListener("tap", function(){ var old_back = mui.back; var btnArray = [‘是‘, ‘否‘]; mui.confirm(‘您确定退出?‘, ‘‘, btnArray, function(e) { //当选择是的时候执行 if(e.index == 0) { //判断当前设备类型 if(mui.os.ios || mui.os.ipad){ plus.storage.clear(); const threadClass = plus.ios.importClass("NSThread"); const mainThread = plus.ios.invoke(threadClass, "mainThread"); plus.ios.invoke(mainThread, "exit"); }else if(mui.os.android) { plus.storage.clear(); // 获取当前webview窗口对象 var curr = plus.webview.currentWebview(); //获取所有已经打开的webview窗口 var wvs = plus.webview.all(); for(var i = 0, len = wvs.length; i < len; i++) { //关闭除当前页面外的其他页面 if(wvs[i].getURL() == curr.getURL()) //遇到当前页跳过 continue; //非当前页执行关闭 plus.webview.close(wvs[i]); } /*//打开login页面 plus.webview.open(‘Signin.html‘,‘Signin.html‘);*/ //执行关闭当前页面 curr.close(); old_back();//退出app }else{ //runtime 运行环境管理模块执行退出 (一般运行不到这里) plus.runtime.quit(); } } }) })
渲染代码结束后,延迟50ms关闭等待框,显示出show页面。以上所述是小编给大家介绍的mui 打开新窗口的方式总结及注意事项,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!