【发布时间】:2017-11-17 17:02:31
【问题描述】:
我已经完成了这个 Ajax jQuery 函数,它将滚动位置保存在 localStorage 中,它在 Chrome 上运行良好,但在其他 Web 浏览器上不起作用,我该怎么做才能让它在所有平台上运行?
JS:
<script type="text/javascript">
$.ajax({
type: "GET",
url: "AdminListUsers.aspx?column=Disabled&direc=False&a=chstat&z=+",
success: function loadDoc() {
$(window).unload(function () {
var scrollPosition = $("body").scrollTop();
localStorage.setItem("scrollPosition", scrollPosition);
});
if (localStorage.scrollPosition) {
$("body").scrollTop(localStorage.getItem("scrollPosition"));
}
}
});
</script>
C#:
var toggleUrl = "AdminListUsers.aspx?column=" + (IsClicked.FirstOrDefault().Key ?? "Name") + "&direc=" + (IsClicked.FirstOrDefault().Value) + "&a=chstat&q=" + id.ToString() + "&d=" + disabled + "&z=" + Server.UrlEncode(txtSearchFor.Text);
var hl = new HyperLink();
hl.Text = status;
hl.Style.Add(HtmlTextWriterStyle.Color, (disabled ? "red" : "green"));
hl.NavigateUrl = toggleUrl;
hl.Attributes.Add("onclick", "loadDoc();return true;");
cell.Controls.Add(hl);
tr.Cells.Add(cell);
【问题讨论】:
-
它不能在哪些浏览器中运行?这似乎相当标准。我猜 IE 是问题
-
@RoryMcCrossan 并非如此,它仅适用于 Edge 和 Chrome。 Firefox、Safari 和 IE 是个问题。
-
scrollTop(n)应该采用Number,但是当您从localStorage获取值时,它是一个字符串。我不确定这是否是问题所在,因为$(body).scrollTop(42)在 Firefox 中也不适用于我......嗯,奇怪 -
哦,试试
$(window).scrollTop(n),而不是$(body),see this -
@qlown 干得好,你是对的 :)
标签: javascript jquery ajax google-chrome cross-browser