2012-09-16 27 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"); 
       } 
    } 
}) 

它的工作现在。

相关问题