ユーザーがASP.NETボタンをクリックした後に「ページスクロールアニメーション」を作成しようとしています。asp.net MaintainScrollPositionOnPostbackの後のページスクロールで正しくjquery.animateを使用する方法
非常に簡単なアプローチ:
String script = "<script type=\"text/javascript\">" + "\n" +
"$(document).ready(function() {" + "\n" +
"var destination = $('#" + lblMessage.ClientID + "').offset().top;" + "\n" +
"alert($('html, body').scrollTop());" + "\n" +
"$('html, body').animate({ scrollTop: destination-20}, 500);" + "\n" +
"});" +
"</script>";
ClientScript.RegisterClientScriptBlock(this.GetType(), "scrollToMessage", script);
この一つのことを除いて、すべての作品。私のボタンはページの折りたたみの下にあるので、ユーザーはそれをクリックするためにスクロールする必要があります。彼がそれをクリックすると、私のコードの背後にいくつかのビジネス用のものが置かれ、ページをスクロールするためのjavascriptが登録されます。 "どこから来たのか自分のラベルがどこにあるか"(これは位置ゼロのちょっと下にあります。私のjavascriptコードは、スクロール位置がASP.NETによって維持される前に実行されているので、スクロールアニメーションはゼロから私のラベルの位置に移動し、ボタンの位置からラベルの位置に移動しません。
そして、
この問題を回避するには、ASP.NETのMaintainScrollPositionOnPostback javascriptがdocument.readyの後に実行されると推測しています。私は単に遅延させることができます。理想的には「キュー」 "それは.NETスクロール調整の直後です。しかし、私はclを持っていませんそれを行う方法。
誰でも同様の問題がありましたか?何かヒント? ###
は、単に)ASP.NETのWebForm_RestoreScrollPosition(手動で呼び出す必要があったソリューションをBEGIN
// ###。清潔な結果。
String script = "<script type=\"text/javascript\">" + "\n" +
"$(document).ready(function() {" + "\n" +
"if (typeof(WebForm_RestoreScrollPosition) == 'function') {" + "\n" +
"WebForm_RestoreScrollPosition();" + "\n" +
"}" + "\n" +
"var destination = $('#" + lblMessage.ClientID + "').offset().top;" + "\n" +
"$('html, body').animate({ scrollTop: destination-20}, 500);" + "\n" +
"});" +
"</script>";
ClientScript.RegisterClientScriptBlock(this.GetType(), "scrollToMessage", script);
// ### END SOLUTION ###
ありがとう!
いいえ...良い回避策が見つかりました。私はWebForm_RestoreScrollPosition()を呼び出します。 (それが関数の場合)私のアニメーションの直前。すべてが一緒に来る。質問にコードを追加し、7時間後に回答します。 –