Javascript 用户离开页面时如何执行操作
规格:Javascript 用户离开页面时如何执行操作,javascript,jquery,Javascript,Jquery,规格: 当用户离开页面时显示警报 当用户确认“离开此页面”时执行操作(发送ajax请求并等待收到响应) 收到ajax响应后,离开页面 我的代码是: window.onbeforeunload = function (e) { e = e || window.event; if (e) { e.returnValue = 'Sure?'; } $.ajax({ url: '/api/Electronic/leave',
window.onbeforeunload = function (e) {
e = e || window.event;
if (e) {
e.returnValue = 'Sure?';
}
$.ajax({
url: '/api/Electronic/leave',
dataType: "json",
contentType: "application/json",
cache: false,
type: 'POST',
data: myData,
success: function (data) {
//how to leave this page?
},
error: function () {
console.log("Error");
}
});
return 'Sure?';
};
-当用户离开页面并等待结果时,可以执行同步ajax调用
window.onbeforeunload=function(e){
var result = false;
$.ajax({
url: 'https://api.github.com/users/mralexgray/repos',
type: 'GET',
async: false,
success: function (data) {
//do whatever you want here
for (var i = 0; i < 10000;i++){
console.log(i);
}
result = true;
},
error: function (e) {
console.log("error");
}
});
if (result) {
window.onbeforeunload = window.thisPage.closeEditorWarning;
} else {
var confirmationMessage = 'Somthing went wrong. If you leave your changes will be lost.';
(e || window.event).returnValue = confirmationMessage;
return confirmationMessage;
}
}
window.onbeforeunload=函数(e){
var结果=假;
$.ajax({
网址:'https://api.github.com/users/mralexgray/repos',
键入:“GET”,
async:false,
成功:功能(数据){
//在这里你想干什么就干什么
对于(变量i=0;i<10000;i++){
控制台日志(i);
}
结果=真;
},
错误:函数(e){
控制台日志(“错误”);
}
});
如果(结果){
window.onbeforeunload=window.thisPage.closeEditorWarning;
}否则{
var confirmationMessage='出现问题。如果您离开,您的更改将丢失';
(e | | window.event).returnValue=确认消息;
返回确认消息;
}
}
-当用户离开页面并等待结果时,您可以执行同步ajax调用
window.onbeforeunload=function(e){
var result = false;
$.ajax({
url: 'https://api.github.com/users/mralexgray/repos',
type: 'GET',
async: false,
success: function (data) {
//do whatever you want here
for (var i = 0; i < 10000;i++){
console.log(i);
}
result = true;
},
error: function (e) {
console.log("error");
}
});
if (result) {
window.onbeforeunload = window.thisPage.closeEditorWarning;
} else {
var confirmationMessage = 'Somthing went wrong. If you leave your changes will be lost.';
(e || window.event).returnValue = confirmationMessage;
return confirmationMessage;
}
}
window.onbeforeunload=函数(e){
var结果=假;
$.ajax({
网址:'https://api.github.com/users/mralexgray/repos',
键入:“GET”,
async:false,
成功:功能(数据){
//在这里你想干什么就干什么
对于(变量i=0;i<10000;i++){
控制台日志(i);
}
结果=真;
},
错误:函数(e){
控制台日志(“错误”);
}
});
如果(结果){
window.onbeforeunload=window.thisPage.closeEditorWarning;
}否则{
var confirmationMessage='出现问题。如果您离开,您的更改将丢失';
(e | | window.event).returnValue=确认消息;
返回确认消息;
}
}
当用户确认“离开此页面”时执行操作(发送ajax请求并等待收到响应)
那是不可能的。当用户确认“离开此页面”时,脚本终止
当用户确认“离开此页面”时执行操作(发送ajax请求并等待收到响应)
那是不可能的。当用户确认“离开此页面”时,您的脚本将被终止。在现代浏览器上,您不能再这样做。您的问题是什么?@ji ruh我发布的代码不起作用。如何等待直到收到响应?如何关闭ajax成功标签?试试这个,对于某些浏览器来说可能不稳定。看看这个答案:在现代浏览器上,你不能再这样做了。你的问题是什么?@ji ruh我发布的代码不起作用。如何等待直到收到响应?如何关闭ajax成功选项卡?尝试此方法对于某些浏览器来说可能不稳定。查看以下答案: