javascript - 在页面返回上滚动到相同数量

标签 javascript php jquery

我怎样才能成功实现以下场景:

我有一个 php 页面将 post 数据发送到另一个页面,该页面执行 MySql 语句。完成后页面重定向到上一页。

header("location: {$_SERVER['HTTP-REFERER']}");

问题是一旦页面重定向,它就会“跳转”到页面顶部(这是正常的)。我需要页面以其之前的滚动量加载。

我看过scroll sneak但这需要直接加载相同的页面。另外,我正在努力寻找合适的操作方法。

有什么想法吗?

最佳答案

那么,您有两个解决方案:

  1. 将当前的 scrollTop 值存储在 localStorage 中。这是最简单的方法。不足之处?不兼容 IE8 和更早版本。
  2. 将变量中的 scrollTop 值发送到服务器,以便它可以在您重新加载页面时将其存储回来并使用它来定位滚动。

第一种方法:

//just before submit
localStorage.setItem('scrollTop', $(window).scrollTop());
//...
//in the page load
$(document).ready(function() {
    var scrollTop = localStorage.getItem('scrollTop');
    if (scrollTop !== null) {
        $(window).scrollTop(Number(scrollTop));
        localStorage.removeItem('scrollTop');
    }
    ...
});

第二种方法

<!--include a hidden input in your form -->
<input type="hidden" name="scrollTop" id="scrollTop" value="<?php isset($_POST['scrollTop']) ? $_POST['scrollTop'] : ""; ?>" />

如果 scrollTop 值被发送到服务器,将它放入这个隐藏字段。然后,使用 javascript:

$(document).ready(function() {
     var scrollTop = $('#scrollTop').val();
     $(window).scrollTop(Number(scrollTop));
     ...
});
....
//before form submit
$('#scrollTop').val($(window).scrollTop()); //the current scrollTop value will be sent to the server

就是这样。当然,如果您使用服务器方法,则在执行重定向时可能必须使用 session 变量。如果您使用 AJAX,您可能还需要稍微调整一下,但我希望您能理解。使用更适合自己的方法。

关于javascript - 在页面返回上滚动到相同数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22543415/

相关文章:

javascript - 编写一个简单的自定义阅读更多关于需要重构的 jquery 的点击功能

php - 包装使用事务的类方法

由于逗号导致 PHP 逻辑语句语法错误

php - 无法通过 CSS 访问 JQuery

jquery - CSS 将多个没有模式的第 n 个子元素放入一个选择器中

javascript - 从动态插入的按钮显示模态

javascript - 如何将现有数据读入 Quill JS

javascript - OOO JavaScript : object self reference returns undefined but console shows it exists

javascript - 可以使用自定义结帐更新 Stripe 中的配置选项吗?

滚动事件上的 Javascript 更改 css 然后等待然后重新更改