关闭页面时window.location事件未执行的原因分析及解决方案


Posted in Javascript onSeptember 01, 2014

1、问题描述:

JS中定义widow.location = function(),页面关闭时,logout()函数未执行。 

window.onunload = function() {
    logout();
  }

function logout(reqParam, callback){
    var userManageServiceUrl = "http://" + getServerAddr() + "/axis2/services/UserManageService";
    var urlList = [];
    var url = window.location.href;
    urlList = url.split("?");
    var sessionID = urlList[1];
    reqParam.sessionID = sessionID;
    var pl = new SOAPClientParameters();
    var reqParamStr = JSON.stringify(reqParam);
    pl.add("reqParam", reqParamStr);
    SOAPClient.invoke(userManageServiceUrl, "logout", pl, false, callback);
  }

2、问题原因:

logout()中调用SOAPClient.invoke()方法,参数为true,代表前端和server是异步方式通信,即前端还未接收到server端的响应,便已经执行后面的语句了,在该问题中表现为前端执行logout()时还未等到server的响应,便已经将页面关闭了,所以表现为logout()未执行。

3、解决方法:

将前端和server通信方式改为同步,即将SOAPClient.invoke()方法中true改为false,问题得到解决。

Javascript 相关文章推荐
多种方法判断Javascript对象是否存在
Sep 22 Javascript
浅谈javascript中for in 和 for each in的区别
Apr 23 Javascript
javascript清空table表格的方法
May 14 Javascript
javascript数组克隆简单实现方法
Dec 16 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
Feb 23 Javascript
vue从使用到源码实现教程详解
Sep 19 Javascript
浅谈layer的iframe弹窗给里面的标签赋值的问题
Nov 10 Javascript
JavaScript易错知识点整理
Dec 05 Javascript
基于JavaScript实现前端数据多条件筛选功能
Aug 19 Javascript
详解Vue CLI3配置解析之css.extract
Sep 14 Javascript
基于javascript的无缝滚动动画实现2
Aug 07 Javascript
vue单应用在ios系统中实现微信分享功能操作
Sep 07 Javascript
用js通过url传参把数据从一个页面传到另一个页面
Sep 01 #Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
Sep 01 #Javascript
Javascript让DEDECMS告别手写Tag
Sep 01 #Javascript
通过JS来动态的修改url,实现对url的增删查改
Sep 01 #Javascript
一个不错的仿携程自定义数据下拉选择select
Sep 01 #Javascript
原生javascript实现拖动元素示例代码
Sep 01 #Javascript
使用text方法获取Html元素文本信息示例
Sep 01 #Javascript
You might like
ThinkPHP实现递归无级分类――代码少
2015/07/29 PHP
学习PHP Cookie处理函数
2016/08/09 PHP
Python中使用django form表单验证的方法
2017/01/16 PHP
CentOS7编译安装php7.1的教程详解
2019/04/18 PHP
基于PHP实现邮箱验证激活过程详解
2020/10/28 PHP
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
2012/02/03 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
基于zepto的移动端轻量级日期插件--date_picker
2016/03/04 Javascript
Node.js刷新session过期时间的实现方法推荐
2016/05/18 Javascript
玩转JavaScript OOP - 类的实现详解
2016/06/08 Javascript
JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
2016/08/24 Javascript
js面向对象编程总结
2017/02/16 Javascript
VUE 使用中踩过的坑
2018/02/08 Javascript
Postman模拟发送带token的请求方法
2018/03/31 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
elementUI多选框反选的实现代码
2019/04/03 Javascript
vue封装可复用组件confirm,并绑定在vue原型上的示例
2019/10/31 Javascript
JavaScript文档加载模式以及元素获取
2020/07/28 Javascript
Postman如何实现参数化执行及断言处理
2020/07/28 Javascript
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
Python对小数进行除法运算的正确方法示例
2014/08/25 Python
Python函数式编程指南(一):函数式编程概述
2015/06/24 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
2018/03/30 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
2020/02/13 Python
Python3.x+pyqtgraph实现数据可视化教程
2020/03/14 Python
新建文件时Pycharm中自动设置头部模板信息的方法
2020/04/17 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
2020/06/28 Python
新加坡航空官方网站:Singapore Airlines
2016/10/13 全球购物
德国隐形眼镜店:LuckyLens
2018/07/29 全球购物
彪马荷兰官网:PUMA荷兰
2019/05/08 全球购物
Java基础知识面试题
2014/03/25 面试题
综治工作心得体会
2014/09/11 职场文书
公司人事任命通知
2015/04/20 职场文书
餐厅服务员管理制度
2015/08/05 职场文书
三好学生评选事迹材料(2016精选版)
2016/02/25 职场文书
MySQL创建管理KEY分区
2022/04/13 MySQL