0

jquerymobile1.1.1を使用してWebアプリを作成しました

アプリの一部として、パスワード取得機能を構築しました。ユーザーがパスワードをリセットする必要がある場合は、フォームに記入し、パスワードリセットページのアドレスと他の2つのパラメーターを含むリンクが記載された電子メールを受信します。

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

最初の問題: ユーザーがリンクをクリックすると、アドレスバーのURLに次のように表示されていてもWebアプリのホームページが表示されます。www.mywebapp.com/ demo.html#resetPassword?x = 123&y=123わかりましたそのjQuerymobileは、ハッシュ後のパラメーターの受け渡しをサポートしていないため、次の解決策を考え出しました。

少し不便な解決策: 次のコードをまとめました。このコードは、URLを読み取り、2つのパラメーターをキャプチャして、ユーザーをパスワードリセットページにリダイレクトします。

$( 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ページに直接移動するにはどうすればよいですか?

4

2 に答える 2

0

コンテンツのない空の初期ページを使用します。デフォルトでは、changePageを最初のページに変更しますが、resetPasswordの場合のように、代わりにそれをchangePageに変更する場合もあります。

于 2012-09-16T18:59:34.793 に答える
0

私はレイモンドカムデンの提案に従い、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");
                }
    }
})

現在動作しています。

于 2012-09-17T14:35:40.533 に答える