关闭页面window.location事件未执行的原因及解决方法

 更新时间:2014年09月01日 17:31:09   投稿:whsnow  
这篇文章主要介绍了关闭页面window.location事件未执行的原因及解决方法,需要的朋友可以参考下

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实现获取服务器时间

    本文给大家总结了一下使用javascript来获取服务器时间的几种方法和思路,十分的简单明了,有需要的小伙伴可以参考下
    2015-05-05
  • JS实现水平遍历和嵌套递归操作示例

    JS实现水平遍历和嵌套递归操作示例

    这篇文章主要介绍了JS实现水平遍历和嵌套递归操作,结合实例形式分析了javascript遍历与递归相关操作技巧,需要的朋友可以参考下
    2019-08-08
  • DVA框架统一处理所有页面的loading状态

    DVA框架统一处理所有页面的loading状态

    dva 有一个管理 effects 执行的 hook,并基于此封装了 dva-loading 插件。下面通过本文给大家分享DVA框架统一处理所有页面的loading状态,感兴趣的朋友一起看看吧
    2017-08-08
  • JavaScript属性操作

    JavaScript属性操作

    这篇文章介绍了JavaScript属性的操作,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • JavaScript 模块化开发实例详解【seajs、requirejs库使用】

    JavaScript 模块化开发实例详解【seajs、requirejs库使用】

    这篇文章主要介绍了JavaScript 模块化开发,结合实例形式详细分析了基于seajs、requirejs库的JavaScript模块化使用相关操作技巧,需要的朋友可以参考下
    2020-05-05
  • 小程序实现简单的计算器

    小程序实现简单的计算器

    这篇文章主要为大家详细介绍了小程序实现简单的计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • JS 学习总结之正则表达式的懒惰性和贪婪性

    JS 学习总结之正则表达式的懒惰性和贪婪性

    这篇文章主要介绍了JS 学习总结之正则表达式的懒惰性和贪婪性的相关资料,需要的朋友可以参考下
    2017-07-07
  • css+js实现部分区域高亮可编辑遮罩层

    css+js实现部分区域高亮可编辑遮罩层

    下面介绍我在项目中实现的方式,全屏遮罩,部分区域可操作,需要的朋友可以参考下
    2014-03-03
  • 利用JS重写Cognos右键菜单的实现代码

    利用JS重写Cognos右键菜单的实现代码

    我写了一个利用JS禁用Cognos右键菜单,下面的JS可以实现重写Cognos的右键菜单。只要将下面的代码拷到一个HTML项里即可。
    2010-04-04
  • 原生JS实现$.param() 函数的方法

    原生JS实现$.param() 函数的方法

    这篇文章主要介绍了原生JS实现$.param() 函数的方法,由于遇到相关序列化的问题,但是vue项目中由于减少队jquery引用的限制,导致不能用$.param来序列化参数,下面小编给大家分享了实例代码,需要的朋友参考下吧
    2018-08-08

最新评论