Javascript 如何在pageunload上执行js函数

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", "

我正在做一个小游戏,我想在用户离开页面时保存分数,我想在没有jquery或其他库的情况下这样做,这可能吗

我通过执行一个javascript函数来保存分数,该函数创建一个表单并自动提交,因此它的数据被发送到服务器:

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();
}