当前位置:  开发笔记 > 编程语言 > 正文

Safari不在服务器端的refresh/onbeforeunload上运行回调函数(调用客户端代码)

如何解决《Safari不在服务器端的refresh/onbeforeunload上运行回调函数(调用客户端代码)》经验,为你挑选了1个好方法。

我正在尝试在卸载窗口时(即刷新页面时)向数据库发送一些请求.出于某种原因,仅在Safari上,客户端代码被执行,但对服务器的请求永远不会通过.当我在调试器中手动单步执行代码时,服务器确实获得了请求并处理它.

任何人都知道为什么会这样吗?

window.onbeforeunload = function() {
  console.log("inside on before unload");
  var requestParam = new a.ListRequest();
  requestParam.setAction('set_delete');
  
  var callback = function(isSuccess, response) {
    if (isSuccess) {
      //do something
    } else {
      // do something else
    }
  };
  
  // Sends request to server
  a.Fetch.list(requestParam, callback);
  
}



1> craigts..:

可能在Fetch调用中发生的请求是异步的,Safari不会等待它完成,然后再转到下一页/关闭选项卡.如果你可以使呼叫同步,它应该工作.请记住,在某些工具中通常不鼓励和弃用同步调用.

这个与Jquery相关的答案对同步调用有一个很好的解释:https://stackoverflow.com/a/11755262/1341437

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有