Javascript 使用当前浏览器离开页面前的自定义消息

Javascript 使用当前浏览器离开页面前的自定义消息,javascript,jquery,cross-browser,alert,Javascript,Jquery,Cross Browser,Alert,在页面上,我有一个复杂的表单(许多字段、选项卡…),我想显示一条警告消息,警告用户是否试图离开页面,无论他是否发布表单(因为在编辑表单中,您设置了所有必填字段,但您可以修改或不修改值) 我已经看到了更改警告消息的可能性,并且无论如何都不适用于其他浏览器,但是我希望在页面更改之前显示消息,但是我希望在实际默认的Chrome/FF之前显示消息,即。。。弹出警报 我或多或少都在,但这些答案在Chrome51之后就不再相关了 那么,从 是的 (function ($) { 'use strict';

在页面上,我有一个复杂的表单(许多字段、选项卡…),我想显示一条警告消息,警告用户是否试图离开页面,无论他是否发布表单(因为在编辑表单中,您设置了所有必填字段,但您可以修改或不修改值)

我已经看到了更改警告消息的可能性,并且无论如何都不适用于其他浏览器,但是我希望在页面更改之前显示消息,但是我希望在实际默认的Chrome/FF之前显示消息,即。。。弹出警报

我或多或少都在,但这些答案在Chrome51之后就不再相关了

那么,从

是的

(function ($) {
  'use strict';

$(window).bind('beforeunload', function(e) {
  e.preventDefault();
  $('<div title="Attention !">Vous souhaitez quitter cette page. Avez-vous enregistré les données du formulaire ? Si non, choisissez "rester sur la page" lors de l\'affichage de l\'alerte.</div>').dialog({
    modal:true,
    close: function(){$(this).dialog('destroy').remove();},
    position: { my: "center top", at: "center", of: window }
  });
  return "Random message to trigger the browser's native alert.";
});

}(jQuery));
(函数($){
"严格使用",;
$(window).bind('beforeunload',函数(e){
e、 预防默认值();
$(“您的退出页面。您可以注册公式吗?请选择“页面上的休息”页面。)对话框({
莫代尔:是的,
关闭:函数(){$(this).dialog('destroy').remove();},
位置:{my:“中心顶部”,在“中心”,of:window}
});
return“随机消息触发浏览器本机警报。”;
});
}(jQuery));

但这会在浏览器警报之后显示jQueryUI警报消息,因此实际上没有任何用处

自2017年浏览器使用情况起,如何在实际浏览器警报之前显示此jquery警报?
谢谢

您可以尝试的另一个实现:

<html>
  <head>
    <script type="text/javascript">
      var hook = true;
      window.onbeforeunload = function() {
        if (hook) {
          return "Did you save your stuff?"
        }
      }
      function unhook() {
        hook=false;
      }
    </script>
  </head>
  <body>
    <!-- this will ask for confirmation: -->
    <a href="http://google.com">external link</a>

    <!-- this will go without asking: -->
    <a href="anotherPage.html" onClick="unhook()">internal link, un-hooked</a>
  </body>
</html>

var hook=true;
window.onbeforeunload=函数(){
如果(钩子){
return“你保存了你的东西吗?”
}
}
函数unhook(){
hook=false;
}
在Chrome 63版(大约2018年)中,这一点很有效。但是,你没有收到警告“你保存了你的东西吗?”,而是收到了Chrome的默认消息“你所做的更改可能不会被保存”。我相信这是可以解决的,但对我来说,默认消息已经足够好了。