3

私の質問をスコープするための前文:

jQueryとAJAXを広範囲に使用してUIのコンテンツセクションをブラウザーに動的にロードするWebアプリ(またはサイト、これは内部LANサイト)があります。ユーザーは、ナビゲーションメニューを使用してアプリをナビゲートします。ナビゲーションメニューの項目をクリックすると、phpがAJAXで呼び出され、phpは中央のコンテンツセクションに入力するために使用されるコンテンツを返します。

phpによって提供されるページの1つには、ユーザーが値を入力するスプレッドシートのように設定されたテーブルフォームがあります。このテーブルは、データベース内のデータと常に同期しています。したがって、テーブルが作成されると、関連するデータベースデータが入力されますか。次に、ユーザーが「セル」に変更を加えると、その変更はすぐにデータベースに書き戻されるため、テーブルとデータベースは常に同期されます。このアプローチは、入力したデータが保存されていることをユーザーに安心させ(長い話...)、ある種の保存ボタンをクリックする必要がないようにするために採用されました。

したがって、これは常に同期するという考え方が優れています。ただし、ユーザーはセルに値を入力し、セルからフォーカスを外すのではなく、最後の値が失われる原因となるアクションをいくつでも実行できます。ナビゲーションメニューを介してサイトの別のセクション、アプリからログアウト、ブラウザを閉じるなど。

前文の終わり、問題について:

最初は、どのデータが「ダーティ」であるか、または保存されていないかを追跡するだけなので、それは問題ではないと思いました。その後、onunloadイベントで、データベースへの最終書き込みを行いました。ここに問題があります:私の賢い(またはそれほど賢くない、わからない)AJAXの使用とコンテンツセクションの動的な読み込みのため、上記のアクションが実行されたときに、ユーザーが実際に元のURLまたはページを離れることはありません。ブラウザを閉じます。したがって、onunloadイベントは発生せず、最後のデータが再び失われます。

私の質問ですが、コンテンツがこのように動的に読み込まれるときに、人がアプリの「セクション」から離れて移動しているかどうかを把握するための推奨される方法はありますか?

グローバルと現在表示されているページの追跡を含む解決策を思いつくことはできますが、もっとエレガントな解決策があるかどうか、またはデザインに変更を加えることができるかどうかを確認すると思いました。この作品。

いつものようによろしくお願いします!

4

2 に答える 2

1

誰かが興味を持った場合に備えて、ここでフォローアップしたいと思いました。私の質問は不要であることがわかりました。

入力要素のchangeイベントに入力された情報を保存するようにコードを設定し、問題の要素がフォーカスを失ったときにのみchangeイベントが発生するため、ユーザーがWebアプリインターフェイスの他の場所をクリックすると、入力の変更イベントを発生させ、データが保存されます。

唯一の例外は、ページを更新するか、ブラウザーを閉じる場合ですが、これらのイベントは両方ともonunloadイベントになります。つまり、データの保存関数をそのイベントにバインドして、これらのケースを処理できます。

そのため、すべてが期待どおりに機能し、変更イベントがいつ発生するかについての誤解から混乱が生じました。

于 2010-05-20T16:44:13.483 に答える
0

AJAXは通常、サイトナビゲーションには行き過ぎです。AJAXを使用するやむを得ない理由がない限り、ナビゲーションメニューでAJAX呼び出しの代わりに古き良きリンクを使用するようにします。

AJAXは、ページ全体の更新のちらつきなどが表示されることなく、ユーザーをアプリケーションに没頭させるために使用されます。ただし、別のページに移動することを計画している場合は、ページ全体が更新されることが期待されます(したがって望ましい)。

于 2010-05-14T13:01:44.177 に答える