Из этого вопроса: Сохранение позиции прокрутки панели при частичной обратной передаче ASP.NET
Я искал ответ на эту проблему в течение нескольких дней, используя типичную альтернативу MaintainScrollPositionOnPostback иРешения JavaScript, использующие BeginRequestHandler и EndRequestHandler, где в моем случае я использую MasterPage.
Ничего не помогло, однако я придумал довольно простое решение с использованием jQuery с BeginRequestHandler и EndRequestHandler с использованием одного и того же алгоритма @ waqas-raja:
<script type="text/javascript">
var scrollPosition = 0;
$(document).ready(function () {
$(window).scroll(function (event) {
scrollPosition = $(window).scrollTop();
});
});
</script>
<script type="text/javascript">
// It is important to place this JavaScript code after ScriptManager1
var xPos, yPos;
var prm = Sys.WebForms.PageRequestManager.getInstance();
function BeginRequestHandler(sender, args) {
console.log('BeginRequest');
}
function EndRequestHandler(sender, args) {
$(window).scrollTop(scrollPosition);
}
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);
</script>
Идея состоит в том, чтобы фиксировать положение прокрутки в глобальной переменной каждый раз, когда пользователь перемещает прокрутку, таким образом, известно, какая позиция была последней, и при выполнении обратной передачи вводится событие EndRequestHandler иобновлено с последней позицией, которую пользователь пометил
Это сработало для меня в Firefox и Google Chrome:)