内部リンクページのデフォルトの動作を防ぐにはどうすればよいですか?
私の目標は、ユーザーが最初に認証せずにページのコンテンツにアクセスできないようにすることです。
内部リンクページのデフォルトの動作を防ぐにはどうすればよいですか?
私の目標は、ユーザーが最初に認証せずにページのコンテンツにアクセスできないようにすることです。
最近、私は同じ状況に直面していました。私はjQueryMobileをjQueryTemplatesと一緒に使用していました。これらはすべて、Webサービスからの機密データです。
私の解決策はpagebeforeshow
、ユーザーが承認を必要とするページのイベントにコールバックを登録することでした。このコールバック関数内で、ユーザーが許可されているかどうかを確認しました。私の場合、これはJSONP Webサービス呼び出しであり、データまたは適切なエラーコードを返します。
次に、ユーザーが許可されている場合、データはjQueryテンプレートを使用してレンダリングされます。それ以外の場合は、を使用してユーザーをログインページにリダイレクトします$.mobile.changePage()
。
beta3では、次のように「動的にページを挿入する」手法を利用できます。
ユーザー認証はサーバー側のものであり、JavaScriptで実装することはできません!
それでは、自分でGETリクエストを送信できないのはなぜですか。
ログインせずにアクセスできないページは、ユーザーが認証されていない場合、ログインページにリダイレクトする必要があります。JavaScriptから直接Webサービスを使用する場合、ユーザーが認証されていないと、エラーが返されるはずです。
javascriptのページへのアクセスをブロックするのはばかげています。[しかし、私は以前に商用製品でそれを見たことがあることを認めなければなりません...]
編集
わかりました、質問に答えるために...
これは、動作がページにどのように関連付けられているかによって異なります。live
これらの動作とともに、pageshow
またはpagecreate
これらの動作に使用する場合は、イベントpagebefore*
を使用してreturn false
別の編集
私はその問題をよりよく理解しているようです。あなたはウェブサービスを持っていて、それらは安全であり、リクエストをして「エラー-自明ではない」応答を受け取りたくないと思います-そうする必要はありません。また、1つのHTMLドキュメントで複数のページを使用します。
これらの仮定で、私はあなたが次のようなものの上に小さなラッパーを書く必要があると言います$.mobile.changePage()
:
$.mobile.changePageIf(condition,what,how,bool1,bool2){
if(condition){
$.mobile.changePage(what,how,bool1,bool2);
}else{
//display "log in, dude!" or whatever
}
}
また、元の関数の代わりにラッパーを使用して、ユーザーがログインしていることがわかっている場合にtrueを返す条件を設定します。