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”事件对于数据操作来说是不可靠的。其主要目的只是在离开网页之前显示一条警告消息:谢谢。这对我来说也很神奇。