Javascript 在没有对话框的情况下使用onbeforeunload?

Javascript 在没有对话框的情况下使用onbeforeunload?,javascript,jquery,onbeforeunload,Javascript,Jquery,Onbeforeunload,我试图在用户离开我的页面时发布数据。我终于找到了一个有效的解决方案,但是,当用户离开时,它会显示一个确认对话框。我尝试了返回null但它不起作用。是否可以禁用该对话框 window.onbeforeunload = function() { $.post("track.php", { async: false, refid: refid, country: country, type: type, });

我试图在用户离开我的页面时发布数据。我终于找到了一个有效的解决方案,但是,当用户离开时,它会显示一个确认对话框。我尝试了
返回null但它不起作用。是否可以禁用该对话框

window.onbeforeunload = function() {
    $.post("track.php", {
        async: false,
        refid: refid,
        country: country, 
        type: type,
    });

    return '';
}
你能测试一下吗

$(window).on('beforeunload', function (e) {
    if (e.originalEvent) $.post("track.php", {
        async: false,
        refid: refid,
        country: country,
        type: type,
    });
    else $.get("", {
        async: false
    });
    $(this).trigger('beforeunload');
}

这将创建许多无用的请求,但应该让您的第一个请求有足够的时间到达服务器。

我发现了一个非常简单的技巧,可以使用

$(window).bind('onbeforeunload', function () {

$.post("track.php", {
async: false,
refid: refid,
country: country, 
type: type,
});

});
从:

当此事件返回非void值时,将提示用户 确认页面卸载

这意味着处理程序的返回值必须是
undefined
(而不是
'
false
null
),以避免触发确认提示

window.onbeforeunload = function() {

  $.post("track.php", {
  ...
  });

  return undefined;
}
在javascript中,您可以完全跳过返回值以获得相同的结果

在带有jquery的coffeescript中

$(document).ready ->
  $(window).bind('beforeunload', ->
    #put your cleanup code here
    undefined
  )

如果要禁用该对话框,请仅写入

window.onbeforeunload=函数(){
...
返回;
}

而不是

window.onbeforeunload=函数(){
...
返回“”;
}


我希望它能对您有所帮助。

删除
返回
语句也对我有用。

这是react和typescript:

  useEffect(() => {
    window.onbeforeunload = (ev: any) => {
      ev.preventDefault()
      anotherMethod()
    }
  }, [])

不返回任何内容?您需要使用Windows上的return.onbeforeunload:(也许有一个解决方法,让我来测试一下。我想你的问题如下:对吗?这个可行,但唯一的问题是它会弹出一个对话框,好吗?有不同的问题。谢谢,我终于找到了解决方案,绑定beforeunload应该是绑定onbeforeunload。你的意思是:$(窗口)。绑定('onbeforeunload',…)???因为使用这个应该根本不起作用。无论如何,如果你有一个正确的解决方法,请将它作为答案发布。它起作用了。我已经在firefox、chrome和explorer上试用过。所有这些都起作用了。好吧,也许你使用的是较旧版本的jquery,因为现在:我使用的是相同的方法,如果没有returnFor信息,发布代码不会触发“beforeunload”事件对于数据操作来说是不可靠的。其主要目的只是在离开网页之前显示一条警告消息:谢谢。这对我来说也很神奇。