【问题标题】:Using Ajax jQuery localStorage cross-browser使用 Ajax jQuery localStorage 跨浏览器
【发布时间】: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


【解决方案1】:

答案是将$("body").scrollTop();改为$(window).scrollTop();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-27
    • 2013-05-12
    • 1970-01-01
    • 2013-06-01
    • 2016-03-14
    • 2011-01-07
    • 2011-03-30
    • 2011-03-25
    相关资源
    最近更新 更多