5

ASP.NET ページで発生する「ちらつき」効果を防止しようとしています。これは、ユーザーがブラウザーの [戻る] ボタンを使用してページから移動した後にページに移動したときに発生します。ちらつきの理由は、最初のページ読み込み時にコンテンツを含む更新パネルを使用しているためです。その結果、[戻る] ボタンを使用してページが読み込まれると、正しい履歴認識データで更新される前に、最初のコンテンツが非常に短時間表示されます。

これを克服するために、最初のページの読み込み時に更新パネルを非表示 (表示: なし) にし、処理する履歴がない限り表示するつもりです。問題は、履歴があるかどうかを判断するために何を確認すればよいかがわからないことです。Sys.Application に _history メンバーがあることがわかりますが、ページの初期化で確認すると毎回 null になります。

クライアント側のページ読み込みに対処する履歴があるかどうかを判断するために何を確認する必要があるかを知っている人はいますか? そして、どの時点でそれを行うのですか?

4

3 に答える 3

1

ブラウザの戻るボタンとそれが提供する機能は、Web ページのコンテンツから完全に独立しています。

できることの 1 つは、AJAX 更新を行うときにロケーション ハッシュを設定することです。ページをロードするときにこれを検出できる場合があります。私はそれを試していません。サーバー側で URL の # 部分を解析して、AJAX 履歴のどこにいるかを確認できるはずです。

location.hash = 'foo';
于 2010-05-25T07:55:21.770 に答える
0

非表示の入力を空白の値でページに配置し、ページの読み込み時にその値を設定します。戻るボタンを使用すると、ページ読み込みスクリプトは値がまだ設定されていることを検出し、それに応じて応答できることがわかります。これは、ページのロード間でフォームのコンテンツを保持するブラウザー機能を利用します。

于 2010-09-10T05:09:41.673 に答える
0

返信ありがとうございます。現在、表示プロパティが none に設定されている更新パネルの周りに div があります。Sys.Application の init イベントで、window.location.hash 値をチェックして、ページの読み込みがブラウザの戻る/進むボタンのクリックの結果であるかどうかを判断しています。そうでない場合は、表示プロパティをブロックに設定しています。そうでない場合は、当分の間「display: none」のままにします。

戻るボタンがクリックされた結果として呼び出されるScriptManager Navigateイベントハンドラーのサーバー側で、表示プロパティをブロックに設定するクライアントスクリプトブロックを登録しています。

少しテストを行ったところ、正常に動作しているようで、ちらつきもなくなりました。MS AJAX クライアント オブジェクトの 1 つを使用して履歴を確認したいのですが、そうです。

于 2010-05-25T10:15:40.487 に答える