2009-07-28 18 views
3

私のwebappには多数のポップアップがあり、私の上司はセッションの有効期限が切れた後、セッションが満了してポップアップでユーザーが更新を押すとログオンページが表示されます - >ユーザーログオン - >ユーザーはダッシュボードに転送されます。さて、ポップアップのダッシュボード画面は完全に無気力です。ここでGoogleが私を得た場所です:セッションの終了時に閉じるポップアップ

ポップアップを閉じるにはJavaScriptを使用してください。セッションが満了した場合(セッションの有効期限をjspからチェックし、条件付きでonloadスクリプトを含む場合)、このonloadスクリプトをレスポンスに生成します。

これは良い方法だと思いますか?このシナリオのベストプラクティスは何ですか?

P.Sは: - 定期的にこれを行う私がログインを確認し、必要に応じてそれらを閉じるためのXMLHTTPリクエストになりAJAX

+2

ベストプラクティスは、「ポップアップの負荷」を使用しないことです。さて、 "onload"イベントでポップアップを閉じることについて話をすると、実際に何が起きるかは、ユーザーがポップアップをリフレッシュして閉じる(これは本当にユーザーの立場からは奇妙です)、またはユーザーはブラウザからプロンプトを表示します窓?はい/いいえ)それは同じように奇妙です。 – ChssPly76

+0

@ ChssPly76 - はい、ユーザーの観点からは、おそらく変です。しかし、ポップアップなしでデータ指向アプリケーションを設計することは難題の一つです。 – Jay

+0

私はそれの背後にある情報は必要ない限り、ポップアップで大丈夫です。私がすると、私はそれらに怒って、デザイナーを呪う。 – geowa4

答えて

1

過去の人生では、ウィンドウが開いていたことを維持するポップアップマネージャオブジェクトを作成しました。おそらく、まだ行われていない場合は、これらのいずれかを作成する必要があります。次に、setTimeoutを使用して、何分(何時でも必要な時間)経過した後に関数を呼び出すことができます。これにより、最近のアクティビティ(おそらくAJAX経由)がチェックされ、セッションが終了したと判断した場合はポップアップを閉じます。そうでない場合は、新しい時間でsetTimeoutに再度電話してください。

^^ AJAX編集前の^^

あなたはAJAXを使用できないので、ポップアップであることを示すURLに何かを置くことができますか?その後、ユーザーがリロードを押すとログイン画面が表示されないことがわかります。

1

最善の方法を使用することはできませんしています。

これはAJAXリクエストであることに気付いたことがあるが、AJAXを使用することが許可されていない人は誰でも受け入れる可能性があるということは明らかに馬鹿です。

+0

@ IT以外のコア企業の企業ITチームには、AJAXを使用しないように指示する馬鹿が詰め込まれています:-):そして私の上司は誰ですか? – Jay

+4

定期的なHTTPリクエストでセッションを有効にしませんか? –

+0

で締め付けられます。もしもあなたの上司が、あなたがちょうど彼を馬鹿と呼んでいると読んだなら、あなたもそうです。 – geowa4

1

あなたの上司がAJAXを使わずにこれを達成するように求めている場合、あなたは困っています。彼は、ブラウザが(ページをリフレッシュせずに)サーバとの唯一の接続がjavascript(彼がajaxであると理解しているもの)であることを理解するべきです。

これを行う最善の方法は、ユーザーが30秒ごとにログインしているかどうかを確認するために、ページにスクリプトを設定してサーバーに問い合わせることです。

setInterval(function(){ 
    $.get("loggedin.php", function(result) { 
    if (!result.isLoggedIn) 
     window.close(); 
    }); 
}, 30000); 

このスクリプトでは、javascriptソリューションの迅速な開発にjQueryフレームワークを使用していることを前提としています。これは、JSON(Javascript Object-notation)を使ってloggedin.phpファイルから戻り値をテストします。

要するに、AJAXを使用する必要があります。他の方法はありませんあなたの上司に教えてください。彼がそれをまだ得られないなら、数学を使わずに小切手帳のバランスをとるように頼んでください。

+2

あなたの上司にあなたには素晴らしいと言って、AJAXの代わりにJavascriptでやる方法を考えた。 –

+1

AJAXのJはjavascriptだ。残念ながら、この例ではJQueryを使用していて、AJAXのA、J、Xを使っていますが、AJAXを使用していないというケースを構築できます。 –

1

Webアプリケーションでモーダルダイアログを実装するための別の方法はにある:

  1. モデルの表示にスタイルDIV、デフォルトで対話:なし。所望の作用に
  2. 、注入/モーダルダイアログDIVが表示されるようにCSSの表示をリセットするページのソース
  3. にモーダルダイアログDIVを追加は、
  4. CSSのZ-indexプロパティを設定することにより、ページの上に重ね実行が成功するかユーザーがキャンセルするとモーダルダイアログが消えるようにする

モーダルダイアログはページソースの一部であるため、セッションがタイムアウトするとダイアログが消えます。この方法では、ポスターが対処しようとしている間に孤立する可能性のあるサポートウィンドウが生成されません。そして、それはAJAXを使用しないという要件に適合します。

これらは手作業で作成できますが、さまざまなブラウザをサポートする必要があるため、実際にはこれをお勧めしません。 Yahoo User Interfaceを見ることをお勧めします。ニーズに合わせてカスタマイズすることができます(IE:モーダルダイアログのみ)。要件が変更された場合、AJAXをサポートします。

モーダルダイアログからモーダルダイアログを作成することに注意してください。理論的には

0

、あなたは隠されたフラッシュウィジェットを使用してAJAXを避けることができ...

しかし、より実用的に、AJAXは「正しい」ソリューションである、と私は、あなたの上司に話をしなければならないだろうと思い、場所を決定この「no AJAX」のルールは、AJAXがこの問題を解決する最善の方法であることを彼に納得させました。

AJAXの実装に時間がかかると思いますか?もしそうなら、あなたは彼が間違っていると証明するべきです。彼はそれを維持することは難しいと思いますか?もしそうなら、これを行うためのコードがどれくらいシンプルであり、一般的なAJAXライブラリがどれくらい広く使われているかを示してください。あなたの上司が合理的であれば、彼の目標は製品にとって何が最善であるかにあります。そして、あなたは彼と同情することができます。