执行出问题代码如下:
mui.openWindow({
url: 'login.html',
id: 'login-channel',
createNew: false
});
问题现象如下图:
事先声明:
该声明基于我发现问题所在发表的:该问题在实际生产的场景中不会出现,往往出现在我们调试中。
操作流程重现:
1、点击登入按钮跳转到登入页面
2、输入用户信息,点击登入,信息通过window.location.href = ...传到后台验证,同时后台验证成功,跳转回首页
3、再次点击登入按钮,就出现上面情况,经过打印出当前跳转的页面的url信息发现:
console.log(loginvw.id);
console.log(loginvw.getURL());
==》
xxxx
http://***********************
第二点击登入按钮,跳转的页面的地址变成了第一次登入的时候的登入页传递信息去后台验证的地址了,即window.location.href=....的值了。
问题清楚了吧,就是:window.location.href串改了地址。而正常生产的时候是不会登入两次的,所以就不会有这样的问题了
解决方案:
方案1、openWindow里头的属性:createNew设置成true,做成每次都新开页面,不建议这么干。
方案2、跳转之前把要跳转的窗口的url修订回来。修订方式如下:
新增如下代码:(保证登入窗口只有一个,建议这么做,降低硬件消耗)
var loginvw = plus.webview.getWebviewById("login-channel");
if (loginvw != null) {
loginvw.loadURL("_www/login.html");
}
20180621 第一次发表后五分钟内更新:
上面说上面这种现象生产不会出现,我收回我刚刚说的这个话,因为有一种情况就会:
如下,输入账号和密码之后,页面需要跳转到后台验证,因为这个跳转需要时间,所以,如果,我们不等它跳转就直接点击左上方的返回按钮,这个时候,其实当前的webview的url已经变了,变成我们要验证输入信息的后端url了。