我已经阅读了大量有关此主题的答案,但没有任何解决方案对我有用。 jQuery文档很清楚:
当用户导航时,
unload
事件将发送到窗口元素 远离页面。这可能意味着很多事情之一。用户可以 点击链接离开页面,或输入新的URL 地址栏。前进和后退按钮将触发事件。 关闭浏览器窗口将导致触发事件。甚至 页面重新加载将首先创建一个卸载事件。
但这些事件似乎都没有触发beforeunload
事件。
JS
$(function () {
$(window).on('beforeunload', function(){
console.log("hash=" + location.hash)
});
...
答案 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;
});