原因:实现功能的时候,存在有的页面需要登录,有的不需要登录。
实现的时候,就是期望在加载页面前,检查一下登录情况,这里有两个事件
pagebeforechange 和 pagebeforeshow
用pagebeforeshow的话,如果需要登录,会先到目标页,然后再跳转到登录页。
这里用pagebeforechange来实现需求。
下面是相关代码。
(function( $, window, undefined ) {
function queryStringToObject( qstr )
{
var result = {},
nvPairs = ( ( qstr || "" ).replace( /[^\?]*\?/, "" ).split( /&/ ) ),
i, pair, n, v;
for ( i = 0; i < nvPairs.length; i++ ) {
var pstr = nvPairs[ i ];
if ( pstr ) {
pair = pstr.split( /=/ );
n = pair[ 0 ];
v = pair[ 1 ];
if ( result[ n ] === undefined ) {
result[ n ] = v;
} else {
if ( typeof result[ n ] !== "object" ) {
result[ n ] = [ result[ n ] ];
}
result[ n ].push( v );
}
}
}
return result;
}
$( document ).bind( "pagebeforechange", function( e, data ) {
if ( typeof data.toPage === "string" ) {
var u = $.mobile.path.parseUrl( data.toPage );
params = queryStringToObject(u.hash);
if(params["nl"] != undefined) //在这里,我用nl参数表示需要登录如:#home?nl
{
if(在这里判断如果未登录)
{
data.toPage = u.hrefNoHash+"#login"; //跳到登录页
}
}
}
});
})( jQuery, window );