我有一个使用 JavaScript 生成的页面。我想将 $(window).scrollTop()
值存储在哈希中(如 #position=xxx
),以便在刷新页面并再次生成项目时,用户可以从他们离开的地方继续滚动。
我正在尝试修改 beforeunload
上的散列,这似乎不起作用。下面函数的第一部分尝试更改哈希,第二部分负责在页面加载时修改 scrollTop。第二部分工作正常,我只坚持第一部分。
$(window).on('beforeunload',function(){
window.location.hash = "position="+$(window).scrollTop();
}).on('load hashchange',function(){
var scrollregex = /^position=(\d+)$/,
hash = window.location.hash.substring(1);
if (scrollregex.test(hash)) $(window).scrollTop(parseInt(hash.match(scrollregex)[1]));
});
这是否有不同的事件,否则我如何在用户触发刷新时更改散列?
最佳答案
我最终放弃了散列的想法,转而采用基于 sessionStorage
的方法。我写了my own wrapper用于我在以下示例中使用的 session /本地存储。
$(window).on('beforeunload',function(){
var scrltop = $(window).scrollTop();
if (scrltop > 0) SStorage.set('position',scrltop);
else SStorage.del('position');
}).on('load',function(){
if (SStorage.has('position')){
var pos = parseInt(SStorage.get('position'));
if (!isNaN(pos) && $(window).scrollTop() === 0) $(window).scrollTop(pos);
}
});
关于javascript - 在 unbeforeunload 上更改 location.hash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24021781/