3***@qq.com
3***@qq.com
  • 发布:2017-12-06 18:20
  • 更新:2017-12-07 14:27
  • 阅读:1550

账号被踢,重新登录数据不加载的问题

分类:HTML5+

在某个需要登录的界面,刷新发现账号被踢掉了,跳到登录界面,登录成功后返回还在这个页面但是,数据怎么不加载了呢?

2017-12-06 18:20 负责人:无 分享
已邀请:
z***@gmail.com

z***@gmail.com - Hbuilder是个好东西

最简单的方法: 跳登陆前在列表页加一个

setInterval, 检测一个标记,比如 localStorage['user_login'];

然后登陆页登陆成功后,设置 localStorage['user_login'] = 1;

返回列表页后, setInterval 检测发现 localStorage['user_login'] 的值发生了变化, 就清空这个 localStorage['user_login']标记, 然后 重新请求列表数据

z***@gmail.com

z***@gmail.com - Hbuilder是个好东西

然后在发一个比较优雅的办法:
核心思路:
当页面A打开时,开启一个setInterval,这个interval里,不停的检测当前窗口是否是显示状态。因为窗口一打开的时候一定是显示状态了,所以当窗口变为隐藏状态时,那就可以认定窗口是被新的窗口盖住了。这个时候用一个 js变量做个 标记,标识这个窗口当前被盖住了。然后轮询继续检测。当检测到窗口再次显示,就说明窗口被回显出来了。那这个时候给页面触发一个js事件就好了。

这个方法的有点:不用在打开的页面(如登陆页)做标记,而是完全在原页面就可以完成。

function listenPageBack () {  
    var webHideviewMark = 0;   
    var backTimer = setInterval(function(){  
        if( !window.plus ){  
            return;  
        }  

        var currView = plus.webview.currentWebview();  
        var cid = null;  
        try{  
            cid = currView.id;  
        }catch(ex){}  

        if( !currView || !cid ){  
            return;  
        }  
        //找到所有的正在显示的窗口  
        var displayViews = plus.webview.getDisplayWebview();  

        var ids = $.map( displayViews , function(item){  
            return item.id;  
        } );  

        //如果当前窗口不在显示的窗口列表中,则证明被隐藏了;因为隐藏了,做一个标记  
        if(  $.inArray(cid, ids) == -1 ){  
            webHideviewMark = 1;  
        }else{  
            //如果是显示的,那就检查是否有已隐藏的标记  
            if( webHideviewMark ){  
                //被隐藏过,说明是被回显了。  
                webHideviewMark = 0;  
                $(document).trigger('jsGoBack');  
            }  
        }  

    }, 100);  
}  

//页面底部执行js  
listenPageBack ();  

//绑定事件,进行返回后的刷新处理,以下代码基于zepto或jquery  
$(document).on('jsGoBack', function(){  
    //TODO. 页面返回时就会触发这里的代码  
});
回梦無痕

回梦無痕 - 暂停服务

如果是app要自己写代码去触发刷新数据的。。。
如果是wap2app,要根据具体情况调整

  • 3***@qq.com (作者)

    请问在哪个页面判断呢,原理是什么?谢谢了

    2017-12-07 10:49

  • 回梦無痕

    回复 3***@qq.com:在需要登录的界面的跳转登录界面代码中传递当页的页面id到登陆页,登录页登录成功之后,根据页面id去调用自定义事件刷新数据

    2017-12-07 12:37

3***@qq.com

3***@qq.com (作者)

大神来回答一下呀,感谢感谢

3***@qq.com

3***@qq.com (作者)

置顶一下

3***@qq.com

3***@qq.com (作者)

我做的是app,再次登录完成后,怎么触发这个页面的数据加载呢?

该问题目前已经被锁定, 无法添加新回复