如何使用 hashchange 实现 beforeunload 功能?

use*_*724 6 html javascript

这里的代码适用于页面刷新或关闭页面。它会弹出一个对话框,询问您是否确定要在不保存的情况下离开。

 $(window).on('beforeunload', function(){
      return 'Did you save your changes?';
 });
Run Code Online (Sandbox Code Playgroud)

问题是我有一个 SPA,我也希望它能在 hashchange 上显示。警报在这里起作用,但返回字符串没有任何作用。我猜测该对话框特定于 beforeunload 事件。

 $(window).on('hashchange', function(){
     alert("saved?");
     return "this doesn't do anything";
 });
Run Code Online (Sandbox Code Playgroud)

我应该如何解决这个问题?

Yur*_*ter 2

我认为您可能必须捕获哈希上的点击事件并在未确认时取消它:

$('a[href^="#"]').click(function(){
    return confirm('Did you save your changes?')
});
Run Code Online (Sandbox Code Playgroud)

演示: http: //jsfiddle.net/v8GbN/

  • 如果用户使用后退或前进按钮怎么办? (4认同)