关闭页面时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 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
Apr 07 Javascript
jquery分页插件jpaginate在IE中不兼容问题
Apr 22 Javascript
聊一聊JavaScript作用域和作用域链
May 03 Javascript
Jquery组件easyUi实现选项卡切换示例
Aug 23 Javascript
AngularJS  $modal弹出框实例代码
Aug 24 Javascript
AngularJS自定义服务与fliter的混合使用
Nov 24 Javascript
jQuery编写textarea输入字数限制代码
Mar 23 jQuery
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
Aug 25 Javascript
详解vue 命名视图
Aug 14 Javascript
ES6使用 Array.includes 处理多重条件用法实例分析
Mar 02 Javascript
jquery实现轮播图特效
Apr 12 jQuery
JavaScript实现切换多张图片
Jan 27 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
php xml实例 留言本
2009/03/20 PHP
php共享内存段示例分享
2014/01/20 PHP
php调用C代码的实现方法
2014/03/11 PHP
php通过smtp邮件验证登陆的方法
2016/05/11 PHP
PHP接入微信H5支付的方法示例
2019/10/28 PHP
通过PHP实现用户注册后邮箱验证激活
2020/11/10 PHP
javascript 获取图片颜色
2009/04/05 Javascript
js中将HTMLCollection/NodeList/伪数组转换成数组的代码
2011/07/31 Javascript
js实现横向伸展开的二级导航菜单代码
2015/08/28 Javascript
JS获取IE版本号与HTML设置IE文档模式的方法
2016/10/09 Javascript
关于微信jssdk实现多图片上传的一点心得分享
2016/12/13 Javascript
微信小程序 本地数据存储实例详解
2017/04/13 Javascript
jquery replace方法去空格
2017/05/08 jQuery
Vue使用json-server进行后端数据模拟功能
2018/04/17 Javascript
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
2018/04/17 jQuery
vue中axios实现数据交互与跨域问题
2019/05/12 Javascript
微信小程序实现的picker多级联动功能示例
2019/05/23 Javascript
vue实现的上拉加载更多数据/分页功能示例
2019/05/25 Javascript
详解Vue.js中引入图片路径的几种方式
2019/06/17 Javascript
改进 JavaScript 和 Rust 的互操作性并深入认识 wasm-bindgen 组件
2019/07/13 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
Python实现树的先序、中序、后序排序算法示例
2017/06/23 Python
python GUI实例学习
2017/11/21 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
Gauss-Seidel迭代算法的Python实现详解
2019/06/29 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
2020/02/29 Python
使用Python将Exception异常错误堆栈信息写入日志文件
2020/04/08 Python
浅谈django channels 路由误导
2020/05/28 Python
纯CSS3实现鼠标悬停提示气泡效果
2014/02/28 HTML / CSS
关于HTML5你必须知道的28个新特性,新技巧以及新技术
2012/05/28 HTML / CSS
驾驶员岗位职责
2014/01/29 职场文书
绍兴鲁迅故居导游词
2015/02/09 职场文书
环卫个人总结
2015/03/03 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书
python 经纬度求两点距离、三点面积操作
2021/06/03 Python
特别篇动画《总之就是非常可爱 ~制服~》PV公开,2022年夏季播出
2022/04/04 日漫