使用javascript中的cookie存储和恢复滚动位置
Store and recover scroll position using cookies in javascript
我之前看到了这个问题的答案,但我得到的答案似乎对我不起作用。我是javascript的初学者,如果有人能解释我做错了什么,我将不胜感激。
我的代码在这里:
<script type="text/javascript">
$(document).ready(function()
{
if ( $.cookie("scroll") != null )
{
$(window).scrollTop( $.cookie("scroll") );
}
$(window).on("scroll", function()
{
$.cookie("scroll", $(window).scrollTop() );
});
});
</script>
正如标题中所说,我想要实现的是使用cookie存储用户的滚动位置,并且当页面刷新时,该位置将保持不变。如果有其他方法的话,我不需要使用cookie。提前谢谢。
如果您确实包含了jquery cookie,那么一切都应该按预期工作:
//soln 1
$(window).on("scroll", function() {
$.cookie("tempScrollTop", $(window).scrollTop());
});
$(function() {
if ($.cookie("tempScrollTop")) {
$(window).scrollTop($.cookie("tempScrollTop"));
alert("loaded postion : " + $.cookie("tempScrollTop"));
}
});
工作地点:http://output.jsbin.com/nizejuw
这是一个替代解决方案,使用HTML5的本地存储规范。
//loading soln
$(function() {
if (localStorage.tempScrollTop) {
$(window).scrollTop(localStorage.tempScrollTop);
alert("loaded postion : " + localStorage.tempScrollTop);
}
});
//saving soln 1
$(window).on("scroll", function() {
localStorage.setItem("tempScrollTop", $(window).scrollTop());
});
//saving soln 2
window.onbeforeunload = function() {
var tempScrollTop = $(window).scrollTop();
localStorage.setItem("tempScrollTop", tempScrollTop);
return "Saved scroll to localstorage!!";
};
您可能缺少一个使用$.cookie
代码的外部js库。我可以建议您尝试使用HTML5 Web存储
$(document).ready(function() {
if (localStorage.getItem("scroll") != null) {
$(window).scrollTop(localStorage.getItem("scroll"));
}
$(window).on("scroll", function() {
localStorage.setItem("scroll", $(window).scrollTop());
});
});
FIDDLE
document.location.reload(true)
存储位置,是的最短选项
您可以使用Cookie js
$(document).ready(function () {
$(".sidebar-nav").scroll(function () {
// cookie'ye kaydedilir
Cookies.set("AT_SidebarNav_ScrollTop", $(".sidebar-nav").scrollTop());
});
if (Cookies.get("AT_SidebarNav_ScrollTop")) {
$(".sidebar-nav").scrollTop(Cookies.get("AT_SidebarNav_ScrollTop"));
console.log(".sidebar-nav scrollTop:" + Cookies.get("AT_SidebarNav_ScrollTop"));
}
});
js cookie:https://github.com/js-cookie/js-cookie
您可以使用超时来阻止ui:
var timeout;
$(window).scroll(function (event) {
var scroll_positon = $(window).scrollTop();
clearTimeout(timeout); //clear it to avoid crazy writing
//and create a new interval to write it later
timeout = setTimeout(function () {
Cookies.set('prev_scroll_position', scroll_positon);
}, 250);
});
相关文章:
- 幻灯片滚动javascript不起作用
- 将视口底部滚动到元素底部
- jQuery Lazy加载动画滚动
- 设置滑块分区上的滚动
- 谷歌地图劫持了iphone's滚动(触摸事件)-如何恢复
- 当用户将鼠标移到屏幕/图表上时,自动滚动将暂停.如果鼠标移动停止,自动滚动将再次恢复
- 关闭移动菜单后恢复滚动位置
- 拖放区中可拖动的 Jqueryui 不会滚动,会恢复,滚动条存在
- 单击按钮时停止并恢复滚动页面
- 向上滚动时,基于滚动位置的 javascript 动画不会恢复到其原始状态
- Div 滚动位置在页面更改时不会恢复到顶部
- 使用 JavaScript 恢复滚动事件不起作用
- 正在恢复<text区域>重新加载页面上的滚动条位置
- 我可以用异步内容恢复正常的滚动到目标行为吗?
- 模式隐藏时滚动条未恢复
- 是否有类似于“刷新后恢复滚动位置”的事件?有什么方法可以使用/创建它吗?
- 在Angular应用中,从之前的页面加载中恢复滚动位置
- 使用javascript中的cookie存储和恢复滚动位置
- 表排序器(莫蒂叉)/恢复正文滚动POS - 正确
- 如何在IE11中ajax图像加载后恢复滚动位置