原因:實現功能的時候,存在有的頁面需要登錄,有的不需要登錄。
實現的時候,就是期望在加載頁面前,檢查一下登錄情況,這里有兩個事件
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 );