2012-09-16 7 views
0

Я создал веб-приложение, с помощью JQuery мобильного 1.1.1Попутные Параметры из электронной почты ссылки на JQuery мобильного веба-приложение

Как часть моего приложения я построил функциональные возможности извлечения пароля. Если пользователю необходимо сбросить пароль, они заполнить форму и получить по электронной почте со ссылкой, которая включает адрес страницы сброса пароля и два других параметров, как, например:

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

Исходная задача : Когда пользователь нажимает на ссылку, они видят домашнюю страницу веб-приложения, даже если URL-адрес в адресной строке говорит: 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, вместо этого вы меняетеPage.

+0

! Благодарю. – xited

0

Я последовал suggestion Raymond Camden и добавил следующее моей 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"); 
       } 
    } 
}) 

Он сейчас работает.