【问题标题】:Detect Browser Refresh in Javascript在Javascript中检测浏览器刷新
【发布时间】:2011-03-15 22:24:57
【问题描述】:

我很好奇是否有一种方法可以专门检测 javascript 中的浏览器刷新事件。我们正在使用 jQuery.address 插件为 AJAX 函数提供前进和后退按钮功能。我面临的问题是这个插件似乎没有检测到用户是否刷新了页面。

每次用户在浏览器历史记录中向前或向后移动时都会执行此代码。我也希望它在用户刷新时执行。

 $.address.init(function(event) {
}).change(function(event) {

        SummaryDiv.SwapPanels(newPanelID);
    }

有什么想法吗?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    按照这些思路,我有一个页面,如果刷新,我不想重复其行为,因此我按照this answer 中的描述以编程方式更改了哈希。

    checkRefresh: function() {
        if (document.location.hash === '#visited') {
            console.log('Refreshed');
            return true;
        } else {
            document.location.hash = 'visited';
            return false;
        }
    }
    

    更新

    我发现,如果自动刷新(例如,在再次查看之前从缓存中删除页面数据),至少 Mobile Safari 会忽略哈希。我最终使用了一个更复杂的解决方案described here

    【讨论】:

      【解决方案2】:

      我的一个天真的尝试是在每次更改后简单地将当前状态存储到某个 cookie 中,然后在每次页面加载时再次加载它们。

      【讨论】:

      • 这就是我的做法,无需查找其他方法。但要知道,这种方法很容易被用户避免/编辑。
      • 整个网站都可以禁用 Javascript :)
      【解决方案3】:

      在网上为您找到了这个...

      既有 javascript 巧妙的方法,也有 cookie 方法。

      http://www.tedpavlic.com/post_detect_refresh_with_javascript.php

      【讨论】:

        【解决方案4】:

        在页面刷新时,javascript 也会重新加载。那么你不能直接在jQuery的ready方法中指定你想要发生的事情吗?

        【讨论】:

          【解决方案5】:

          我能够强制更改事件代码在刷新时运行

            window.onload = $.address.update(function(){    
          ...
          })
          

          【讨论】:

            猜你喜欢
            • 2011-09-30
            • 2011-07-09
            • 2021-10-10
            • 2012-04-18
            • 2021-09-10
            • 2019-12-03
            • 1970-01-01
            • 1970-01-01
            • 2010-10-02
            相关资源
            最近更新 更多