javascript - 在 unbeforeunload 上更改 location.hash

标签 javascript jquery onbeforeunload hashchange

我有一个使用 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/

相关文章:

javascript - 网站自动获取消息到 php 聊天应用程序不工作

javascript - 使用数据切换工具提示映射鼠标悬停

javascript - 覆盖透明div一次点击

jQuery 上下循环选择列表值

jquery - 使用 jQuery 将段落放入 h2

javascript - 如果用户由于第二个处理程序中的对话框而停留在页面上,则跳过 beforeunload 处理程序

javascript - 防止 OnBeforeUnload() 事件在刷新/F5 中发生

javascript - 我无法从输入框中获取值

javascript - 卸载时通过 Ajax 运行 PHP

使用 calc 计算 jQuery CSS 宽度