为什么在重新加载页面时jQuery之前没有加载?

时间:2016-06-17 01:36:35

标签: javascript jquery onbeforeunload

我已经阅读了大量有关此主题的答案,但没有任何解决方案对我有用。 jQuery文档很清楚:

  

当用户导航时,unload事件将发送到窗口元素   远离页面。这可能意味着很多事情之一。用户可以   点击链接离开页面,或输入新的URL   地址栏。前进和后退按钮将触发事件。   关闭浏览器窗口将导致触发事件。甚至   页面重新加载将首先创建一个卸载事件。

但这些事件似乎都没有触发beforeunload事件。

JS

$(function () {
    $(window).on('beforeunload', function(){
        console.log("hash=" + location.hash)
    });
    ...

2 个答案:

答案 0 :(得分:1)

页面重新加载时触发事件 。问题是你的代码没有阻止刷新发生,因此在刷新之前它没有时间打印到控制台。

要在刷新页面时测试它确实有效,请尝试以下代码:

$(window).on('beforeunload', function(){
    console.log("hash=" + location.hash);
    return false;
});

您将在控制台中看到该文字,并会提示您是否要重新加载该页面。

修改

我已经实施了@ drown的建议如下:

    location.href = location.hostnamme + "/#/" + location.pathname
    console.log("href=" + location.href)

但日志显示ref = http://writers-tryst.com/writers

我错过了什么?

答案 1 :(得分:0)

您没有使用beforeunload作为法律规定。你不应该返回false,你应该返回一个包含该消息的字符串。试试这个:

$(window).on('beforeunload', function(e) {
  console.log("hash=" + location.hash);
  var confirmationMessage = 'There is something you must finish';
  (e || window.event).returnValue = confirmationMessage;
  return confirmationMessage;
});