2012-09-16 26 views
0

傳遞參數我使用jQuery 1.1.1移動從電子郵件鏈接到jQuery的移動網絡應用程序

正如我的應用我建密碼檢索功能的一部分創建一個Web應用程序。如果用戶需要重新設置自己的密碼,他們填寫表格,並收到一封電子郵件,其中包括密碼重置頁面的地址和其他兩個參數作爲這樣一個鏈接:

www.mywebapp.com/demo.html#resetPassword?x=123&y=123 

最初的問題: 當用戶點擊鏈接時,即使地址欄中的網址顯示爲:www.mywebapp.com/demo.html#resetPassword?x=123 & y = 123 I瞭解jQuery Mobile不支持散列後傳遞參數,所以我提出了以下解決方案。

用小不便的解決方案: 我總結了以下代碼,它讀取URL,抓住我的兩個參數和用戶密碼重置頁面重定向:

$(document).bind("pagebeforeshow", function() { 
    //cpe("parameter") will check whether the specified URL parameter exists 
    if(cpe("x") && cpe("y")){ 
     //gpv("parameter") captures the value of the specified URL parameter 
     recovery.username=gpv("x"); 
     recovery.token=gpv("y"); 
     $.mobile.changePage("#resetPassword"); 
    } 
}) 

不便,因此我目前的問題是: 當用戶點擊電子郵件中的鏈接時,瀏覽器啓動並打開應用程序的主頁面,然後快速顯示#resetPassword頁面。我明白,這是因爲我改變了頁面

$.mobile.changePage("#resetPassword"); 

但是,我怎麼修改上面的代碼,使用戶不會看到主頁面可言,而直接進入到#resetPassword頁?

+0

如果你還在尋找一個乾淨的解決這個問題,我最近建立了一個[插件](https://github.com/CameronAskew/jquery.mobile.paramsHandler)此 –

回答

0

使用沒有內容的空白初始頁面。默認情況下,你的初始頁面做一個changePage到,但在其他情況下,如resetPassword的情況下,你改變頁面。

+0

它的工作!謝謝。 – xited

0

我跟着雷蒙德卡姆登的suggestion並添加以下到我的HTML:

<pre> 

<!--Start of blank initial page: #initPage--> 
<div data-role="page" id="initPage"> 
    <div data-role="content"></div> 
</div> 
<!-- /page --> 

</pre> 

我還添加以下到我的javascript:

//init page -> path control hub 
$(document).bind("pagebeforeshow", function() { 
    var pageid=$.mobile.activePage.attr('id'); 
    if(pageid=="initPage"){ 
     if(cpe("x") && cpe("y")){ 
      recovery.username=gpv("x"); 
    recovery.token=gpv("y"); 
    $.mobile.changePage("#resetPassword"); 
    }else{ 
       $.mobile.changePage("#info"); 
       } 
    } 
}) 

它的工作現在。

相關問題