Web.config Level => pages maintainScrollPositionOnPostBack =" true" />
Page Level => <%@ Page MaintainScrollPositionOnPostback =" true" %GT;
代码级别=> Page.MaintainScrollPositionOnPostBack = true;
浏览器级别=>浏览器ID =" Chrome"的parentID =" Safari1Plus"> 能力> capability name =" supportsMaintainScrollPositionOnPostback"值="真" /> 能力> 浏览器>
上面提到的4种中的任何一种都不适用于Google Chrome 。它与firefox一起正常工作。请提供任何解决方案。
答案 0 :(得分:4)
您可以将此代码段添加到ASP.NET Page / MasterPage(需要jQuery):
<asp:HiddenField runat="server" ID="hfPosition" Value="" />
<script type="text/javascript">
$(function () {
var f = $("#<%=hfPosition.ClientID%>");
window.onload = function () {
var position = parseInt(f.val());
if (!isNaN(position)) {
$(window).scrollTop(position);
}
};
window.onscroll = function () {
var position = $(window).scrollTop();
f.val(position);
};
});
</script>
答案 1 :(得分:2)
我也面临同样的问题。我找到了一个Javascript解决方案here。
<script type = "text/javascript">
window.onload = function () {
var scrollY = parseInt('<%=Request.Form["scrollY"] %>');
if (!isNaN(scrollY)) {
window.scrollTo(0, scrollY);
}
};
window.onscroll = function () {
var scrollY = document.body.scrollTop;
if (scrollY == 0) {
if (window.pageYOffset) {
scrollY = window.pageYOffset;
}
else {
scrollY = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
}
}
if (scrollY > 0) {
var input = document.getElementById("scrollY");
if (input == null) {
input = document.createElement("input");
input.setAttribute("type", "hidden");
input.setAttribute("id", "scrollY");
input.setAttribute("name", "scrollY");
document.forms[0].appendChild(input);
}
input.value = scrollY;
}
};
我希望这会对你有所帮助。
答案 2 :(得分:1)
无论我尝试什么,我都无法让MaintainScrollPositionOnPostback 为我工作。根据 Darkseal 的回答和 Eirik H 的评论,我尝试了以下对我有用的代码。这仅在您的页面上有 ASP.NET ScriptManager(即 MicrosoftAjax.js)时才有效。您还需要将 JQuery 添加到您的页面。将以下代码添加到 .aspx 文件中 asp:ScriptManager 标记下方的某个位置。
<asp:HiddenField runat="server" ID="hfPosition" Value="" />
<script type="text/javascript">
$(function () {
var positionField = $("#<%=hfPosition.ClientID%>");
window.onscroll = function () {
var position = $(window).scrollTop();
positionField.val(position);
};
});
function pageLoad() {
var positionField = $("#<%=hfPosition.ClientID%>");
var position = parseInt(positionField.val());
if (!isNaN(position)) {
$(window).scrollTop(position);
}
};
</script>
基本上,我们将滚动位置保存在名为 hfPosition 的隐藏字段的值中。每当页面滚动时,该值都会更新。然后当回发发生时,pageLoad() 将自动被调用并获取 hfPosition 的值并滚动到该值。
包括 ScriptManager 和 JQuery,我的最终代码片段如下所示:
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<script src="../Scripts/jquery-3.3.1.min.js" type="text/javascript"></script>
<asp:HiddenField runat="server" ID="hfPosition" Value="" />
<script type="text/javascript">
$(function () {
var positionField = $("#<%=hfPosition.ClientID%>");
window.onscroll = function () {
var position = $(window).scrollTop();
positionField.val(position);
};
});
function pageLoad() {
var positionField = $("#<%=hfPosition.ClientID%>");
var position = parseInt(positionField.val());
if (!isNaN(position)) {
$(window).scrollTop(position);
}
};
</script>/>