首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >滚动到页面返回时的相同金额

滚动到页面返回时的相同金额
EN

Stack Overflow用户
提问于 2014-03-21 03:38:53
回答 3查看 254关注 0票数 1

如何成功实现以下场景:

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

代码语言:javascript
复制
header("location: {$_SERVER['HTTP-REFERER']}");

我需要的页面加载在其以前的滚动量。

我已经研究过scroll sneak,但这需要直接加载相同的页面。此外,我正在努力寻找像样的怎么做。

有什么想法吗?

EN

回答 3

Stack Overflow用户

发布于 2014-03-21 03:53:55

好的,你有两个解决方案:

  1. 将当前scrollTop值存储在localStorage中。这是最简单的方法。不好的一面?而不是IE8和更早版本将变量中的scrollTop值compatible.
  2. Send到服务器,这样当您重新加载页面并使用它来定位滚动时,服务器可以将其存储回去。

First方法

代码语言:javascript
复制
//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');
    }
    ...
});

第二种方法

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

如果scrollTop值已发送到服务器,请将其放入此隐藏字段中。然后,使用javascript:

代码语言: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

简单得不得了。当然,如果您使用服务器方法,则在执行重定向时可能必须使用会话变量。如果您正在使用AJAX,可能还需要对此进行一些调整,但我希望您能理解这一点。使用更适合自己的方法。

票数 2
EN

Stack Overflow用户

发布于 2014-03-21 03:48:37

我有一个页面,它每隔20秒刷新一次,每次提交时都会获取当前位置,并将其放入id为scrollPosition的隐藏字段中。

代码语言:javascript
复制
$("#scrollPosition").val($(window).scrollTop());

服务器端代码处理此参数并将其值存储在相同的隐藏字段中,然后根据此值设置当前滚动位置:

代码语言:javascript
复制
$(document).ready(function() 
{ 
    setInterval("submitRefresh()", 20000); 
    $(window).scrollTop(parseInt($("#scrollPosition").val(), 10));
});

基本上,我将当前位置作为参数传递,然后使用该参数的值调用$(window).scrollTop(offset);

票数 0
EN

Stack Overflow用户

发布于 2014-03-21 03:56:10

将您的当前位置与表单一起发布:

代码语言:javascript
复制
$('#form #somefield').val($(window).scrollTop()); // Current page

刷新页面后,获取参数并将其传递给js并设置scroll。

代码语言:javascript
复制
var top = 'SomePostParamFromServer';
$(window).scrollTop( parseInt(top )); // New page
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22543415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档