APP如何退出登录html,hbuider plus app 用户退出登录逻辑-做贡献

啥也不说直上代码,可能有逻辑不严谨的地方,如果有懂的朋友希望给指出。

$('#goOut')[0].addEventListener('tap', function(e) {

//清除用户数据

localStorage.setItem('$user', '{}');

//清除是否长登录

localStorage.setItem('$userLogin', '{}');

/**

* 关闭除了 login 外的所有窗口

* 因为原生 activity 活动(窗口)是以栈的形式存在,即,login 刚打开会被压入栈顶,之后打开的页面会压在它上面。

* 退出登录逻辑:

* 退出登录时只保留栈顶 login(入口页面及当前页面的 webview),其他的都页面 close ,如果当前的如果也被 close 的话,

* 那么本页面的 js 就不会执行了,循环就会终端,会出错。这时候只剩下 login 与 currentWebview ,这样还不行,还要等本

* 循环关闭 webview 的 js 代码执行完后再把 currentWebview 关闭,这样小只剩下 login(入口页面)了,自然而然,登录

* 页面就显示出来了。虽然显示出来了,但是只是加载了 html 与 css 的样式,js 并没有加载,所以还要做其他处理,具体看下面的

* 实施方法。

* 具体实施:

* 1、用 plus.webview.all() 方法获取所有窗口的 webview 对象。

* 2、获取当前 webview 对象。

* 3、用 webviewObj.reload()方法重新加载一下 login 页面,这样 js 也有了。

* 4、循环所有窗口对像的数组(这里奇怪了,数组的第1个居然是入口页面....,与栈不符,就是写死了,为了防止

* 以后的变化造成措手不及,还是手动去获取一下“入口页面”的 url 然后再跟数组里每一个窗口对象的 url 进行对比,相等就

* 跳过本次循环,避免入口页面也被关闭掉。)关闭不想干的窗口。

* 5、关闭当前 webview 页面(窗口)

*/

// 获取所有Webview窗口

var all = plus.webview.all();

//获取当前页面

var currentWebview = plus.webview.currentWebview();

//获取入口页面的 url 地址

var entranceWebviewUrl = plus.webview.getWebviewById(plus.runtime.appid).getURL();

//重新加载 login 窗口

all[0].reload(true);

for(var i = 0; i < all.length; i++) {

if(entranceWebviewUrl == all[i].getURL()){

continue

}

if(currentWebview.getURL() != all[i].getURL()) {

all[i].close('none')

}

}

currentWebview.close('none')

})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值