0

私は非常に単純なjqueryモバイルアプリケーションを持っています:

  • /index.html( へのリンクが含まれていますhome.html)
  • /home.html

前提条件を満たすユーザーにのみ表示したいhome.html(たとえば、ローカル ストレージには が含まれている必要があるlogged=true)。それ以外の場合は、にリダイレクトされるようにしindex.htmlます。もちろん、ユーザーがリンクをクリックしたとき、index.htmlまたはhome.htmlURLを介して直接ナビゲートしたときに、これが発生することを望んでいます。

これを強制するために、すべてのページに含まれる外部スクリプトに次のものがあります。

$(document).on('pagebeforecreate', function(e) {
    if (!userIsLoggedIn() && e.target.id=='home_page') {
        $.mobile.changePage('index.html');
    }
});

home.html私がで始まることに注意してください<div home-role="page" id="home_page">

このコードは機能しますが、問題は、ユーザーがコンテンツをhome.html一瞬見られることです。ページ遷移で呼び出される最も早いイベントであるAPIを見てきました。pagebeforecreateただし、changePageユーザーに見せたくないこのページで呼び出されるまで、さらにイベントが発生することはありません。

home.htmlのレンダリングを完全に停止し、すぐにユーザーを にリダイレクトするにはどうすればよいindex.htmlですか?

4

2 に答える 2

0

以下は、コードを追加する単なるアイデアです。

  1. 「home.html」でデフォルトでページを非表示にします。
  2. 「home_page」が「pagebeforecreate」にあるときにログインしたことを確認します。
  3. ログに記録されている場合は、ページが表示されるようにします。
  4. いいえの場合は、index.html に変更します

しかし、これはログに記録されていない人にページを隠すだけであり、実際には安全ではありません. URL から HTML プレーン コードを取得するためにまだ開かれています。

于 2013-02-19T09:01:35.777 に答える