首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在pageunload上执行js函数

如何在pageunload上执行js函数
EN

Stack Overflow用户
提问于 2017-07-15 18:50:26
回答 2查看 153关注 0票数 1

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

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

代码语言: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();
}

我发现了一些东西,比如,这个函数将弹出一个窗口,上面写着“你真的确定要离开这个页面吗”,

代码语言:javascript
运行
复制
  window.onbeforeunload = function(e) {
    return false; 
  }

但是,当我尝试将'sendData()‘函数放入其中时,它不起作用:

代码语言:javascript
运行
复制
  window.onbeforeunload = function(e) {
    sendData();
  }

即使我把整个函数都放进去了:

代码语言:javascript
运行
复制
  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();
  }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-15 19:19:58

在javascript中使用onunload事件,就像在this article中一样。

代码语言:javascript
运行
复制
window.onbeforeunload = function(e) {
    return 'Are you sure ?'; 
  }

window.onunload = function () {
 sendData();
}
票数 2
EN

Stack Overflow用户

发布于 2017-12-28 01:11:24

这并不是对这个问题的直接回答,但它对我很有效:我没有在pageonunload上发送数据,而是尝试使用XMLHttpRequest以一定的间隔发送数据,这很好用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45117339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档