我有一个按钮,用于修复页面内容的位置,然后在表单从右侧滑入时将其向左推。
除了一件事,这是正常的。当用户稍微向下滚动页面并单击按钮时,它会成功修复该位置。然而,当他们关闭此表单时,页面不会返回到原始位置...它会将用户带回页面顶部。我在下面发布了jquery,这可能有助于更好地解释问题。
这里还有一个jsfiddle例子......
var pageContents;
var currentscrollpos;
$(document).ready(function() {
$("a#testbutton").live('click', function() {
var currentscrollpos = $(window).scrollTop();
var pageContents = $("body").html();
$("body").html("");
$("<div class='pageContainer'>" + pageContents + "</div>").prependTo("body");
$(".pageContainer").css({'position':'fixed','top':currentscrollpos*-1});
$("html, body").animate({ scrollTop: 0 }, 0);
$("<div class='blackout'></div>").appendTo("body");
$(".blackout").css("opacity",0.8).fadeIn('slow', function() {
$("<div class='popupPanel'><a class='closeme'>close</a></div>").appendTo("body");
$(".popupPanel").animate({
right: "0px"
}, 500, function() {
$(".popupPanel").css("position","absolute")
});
$(".pageContainer").animate({
left: "-200px"
}, 500, function() {
});
$("a#testbutton").append(currentscrollpos)
});
return false;
});
$('.closeme').live('click', function() {
var pageContents = $(".pageContainer").html();
$(".popupPanel").css("position","fixed").animate({
right: "-200px"
}, 500, function() {
});
$(".pageContainer").animate({
left: "0px"
}, 500, function() {
$(".blackout").fadeOut('slow', function() {
$(".blackout").remove();
$("body").html(pageContents);
$("html, body").animate({ scrollTop: currentscrollpos }, 0);
});
});
});
});
答案 0 :(得分:2)
您正在使用本地变量,因为您使用的是var
:
var currentscrollpos = $(window).scrollTop();
相反,请删除var
,以便可以在.closeme
点击功能中访问它。您刚开始使用var
。所以:
currentscrollpos = $(window).scrollTop();
这样,将设置最开始的变量,这两个函数都可以访问它。目前,您在a#testbutton
点击功能中声明了另一个变量,原始变量保持不变。
答案 1 :(得分:0)
您可以使用此代码返回从浏览器关闭的页面的位置
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
var currentposition;
$(document).ready(function(){
$(window).scroll(function(){
var scrollPos = $(document).scrollTop();
console.log("scrollPos:"+scrollPos);
localStorage.setItem("key",scrollPos);
});
currentposition=localStorage.getItem("key");
window.scrollTo(0,currentposition);
alert("currentposition:"+currentposition);
});
</script>