刷新 Django 模板,同时保持滚动位置

kh_*_*one 5 html javascript django

我有一个 Django 模板,我可以通过单击按钮来调用视图。view 函数返回 aHttpResponseRedirect到同一页面。我希望页面返回/刷新到与用户单击按钮时相同的滚动位置。

到目前为止,这是我尝试过的:

尝试1:基于thisthis,我onsubmit在表单中添加了一个,如下所示:

<form action="{% url 'buy' market.id %}" method="post" onsubmit="return refreshToSameScroll()">
Run Code Online (Sandbox Code Playgroud)

...location.reload()通过以下脚本调用:

<script type="text/javascript">
    function refreshToSameScroll() {
        location.reload();
    }
</script>
Run Code Online (Sandbox Code Playgroud)

但这没有用。

尝试 2:然后我尝试了以下组合,并从此进行了修改

<form action="{% url 'buy' market.id %}" method="post" onsubmit="return saveScroll()">
Run Code Online (Sandbox Code Playgroud)

...使用这个脚本:

<script type="text/javascript">
      function saveScroll () {
        var page_y = document.getElementsByTagName("body")[0].scrollTop;
        window.location.href = window.location.href.split('?')[0] + '?page_y=' + page_y;
      }

      window.onload = function () {
        if ( window.location.href.indexOf('page_y') != -1 ) {
          var match = window.location.href.split('?')[1].split("&")[0].split("=");
          document.getElementsByTagName("body")[0].scrollTop = match[1];
          }
      }
</script>
Run Code Online (Sandbox Code Playgroud)

这里的想法是,单击按钮保存滚动位置,然后在页面重新加载/刷新后重新拾取滚动位置。但这也不起作用。

知道我做错了什么吗?