Javascript 如何在pageunload上执行js函数
我正在做一个小游戏,我想在用户离开页面时保存分数,我想在没有jquery或其他库的情况下这样做,这可能吗 我通过执行一个javascript函数来保存分数,该函数创建一个表单并自动提交,因此它的数据被发送到服务器:Javascript 如何在pageunload上执行js函数,javascript,php,html,onbeforeunload,Javascript,Php,Html,Onbeforeunload,我正在做一个小游戏,我想在用户离开页面时保存分数,我想在没有jquery或其他库的情况下这样做,这可能吗 我通过执行一个javascript函数来保存分数,该函数创建一个表单并自动提交,因此它的数据被发送到服务器: function sendData() { var form = document.createElement("form"); form.setAttribute("method","post"); form.setAttribute("action", "
function sendData() {
var form = document.createElement("form");
form.setAttribute("method","post");
form.setAttribute("action", "submit.php");
form.setAttribute("id","returnForm");
var formContent1 = document.createElement("input");
formContent1.setAttribute("name","gamesPlayed");
formContent1.value = gamesPlayed; //parameter 1
var formContent2 = document.createElement("input");
formContent2.setAttribute("name","totalSteps");
formContent2.value = totalTurns; //parameter 2
form.appendChild(formContent1);
form.appendChild(formContent2);
document.body.appendChild(form);
document.getElementById("returnForm").submit();
}
我发现了一些东西,比如,这个函数会弹出一个窗口,上面写着“你真的确定要离开这个页面吗?”
window.onbeforeunload = function(e) {
return false;
}
但当我尝试将“sendData()”函数放入其中时,它不起作用:
window.onbeforeunload = function(e) {
sendData();
}
即使我把整个函数都放进去了:
window.onbeforeunload = function(e) {
var form = document.createElement("form");
form.setAttribute("method","post");
form.setAttribute("action", "submit.php");
form.setAttribute("id","returnForm");
var formContent1 = document.createElement("input");
formContent1.setAttribute("name","gamesPlayed");
formContent1.value = gamesPlayed; //parameter 1
var formContent2 = document.createElement("input");
formContent2.setAttribute("name","totalSteps");
formContent2.value = totalTurns; //parameter 2
form.appendChild(formContent1);
form.appendChild(formContent2);
document.body.appendChild(form);
document.getElementById("returnForm").submit();
}
在javascript中使用
onunload
事件,如中所示
这并不是对这个问题的直接回答,但对我来说很有效:
我没有在PageOnLoad上发送不起作用的数据,而是尝试使用XMLHttpRequest以一定的间隔发送数据,这非常有效。如果运行
window.onbeforeunload=function(e){alert(“再见世界”)}
?尝试添加console.log()
在sendData
函数的开头,查看它是否使用您在窗口中尝试的两种方法登录。onberforeunload
可能不允许在Chrome和Mozilla中使用。我在这个选项上遇到了问题,然后看到了这一点:您可以使用setInterval和ajax函数随时向服务器发送数据,以确保不会丢失重要的内容。yamboy1,如果我不在onbeforeunload函数中放入return“somthing”语句,它甚至不会显示message@yamboy1,但是如果我把return语句放在后面,它会执行函数,(顺便说一句,卸载页面时不允许发出警报)Ehm第二个最小字符是a)js给出一个错误,它不应该在那里,但是如果我删除它,它就不工作了。我让它工作了!,有点奇怪,如果我试图离开页面,它会弹出一条消息:“你确定要离开吗?”如果我第一次单击“是”它就不工作了,它就会退出,但是如果我单击“否”,它会发送另一条消息,当我第二次单击“是”它就工作了?!window.onbeforeunload=function(e){sendData();return'you sure?';}function sendData(){console.log(“test”);……我刚刚忘记删除);
。Answer modified@FlorisIt更像是一个注释
window.onbeforeunload = function(e) {
return 'Are you sure ?';
}
window.onunload = function () {
sendData();
}