关闭页面时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,问题得到解决。

(0)

相关推荐

  • window.navigate 与 window.location.href 的使用区别介绍

    首先说明的是 window.navigate 与 window.location.href 都是实现页面链接跳转的,下面将介绍它们的区别. window.navigate("http://jb51.net/") 这个方法是只针对IE的,不适用于火狐等其他浏览器,在HTML DOM Window Object中,根本没有列出window.navigate这个方法,所以这个方法尽量少用,遗忘最好. location 属性是兼容所有浏览器的.因此在实现页面跳转的时候还是使用这个比较靠谱,比如

  • window.location不跳转的问题解决方法

    今天写代码的时候遇到个问题:html里采用onclick事件来实现window.location = url的跳转,在内嵌元素上又加上了href="javascrit:;"的属性.这时这句window.location的跳转失效了.后来上网查了下,想起javascript里面事件是冒泡传递的事,可能是被内嵌的那个href事件给组织了. 解决办法是:在onclick方法里面增加一句return false的语句,让程序强制跳出不继续执行后面的语句.

  • window.location.hash 属性使用说明

    比如http://domain/#admin的location.hash="#admin".利用这个属性值可以做一个非常有意义的事情. 很多人都喜欢收藏网页,以便于以后的浏览.不过对于Ajax页面来说的话,一般用一个页面来处理所有的事务,也就是说,如果你浏览到一个Ajax页面里边有意思的内容,想将它收藏起来,可是地址只有一个呀,下次你打开这个地址,还是得像以往一样不断地去点击网页,找到你钟情的那个页面.另外的话,浏览器上的"前进""后退"按钮也会

  • window.location和document.location的区别分析

    document.location 这个对象包含了当前URL的信息 location.host 获取port号 location.hostname 设置或获取主机名称 location.href 设置或获取整个URL location.port设置或获取URL的端口号 location.search 设置或获取href属性中跟在问号后面的部分 -----------------------------------------------------------------------------

  • javascript 打开页面window.location和window.open的区别

    window.location = "http://www.xxxxxxxx.net" 跳转后有后退功能 其实应该是  window.location.hrefwindow.location.replace("http://www.xxxxxxxx.net") 跳转后没有后退功能 window.open("http://www.xxxxxxxx.net") 要新的窗口打开链接 这个一般用于简单的弹出页面,现在基本上都被屏蔽掉了

  • window.location.hash 使用说明

    比如loation.href是 页面的url .但是 location.hash可以获取或设置页面的 标签值 比如http://domain/#testDemo中 咱们的location.hash 就是 #testDemo 下面引用一个 网上的demo 一个搜索版块,功能有3个:普通搜索,高级搜索,后台管理,分别指明他们各自的hash 值:#search,#advsearch,#adminboss. 在页面初始化的时候,通过window.location.hash来判断用户需要访问的页面,也就是

  • 关于js中window.location.href,location.href,parent.location.href,top.location.href的用法与区别

    "window.location.href"."location.href"是本页面跳转 "parent.location.href"是上一层页面跳转 "top.location.href"是最外层的页面跳转 举例说明: 如果A,B,C,D都是jsp,D是C的iframe,C是B的iframe,B是A的iframe,如果D中js这样写 "window.location.href"."locatio

  • window.location.reload()方法刷新页面弹出要再次显示该网页对话框

    用window.location.reload()方法刷新页面时,有时浏览期会出现一个这样的弹出框, 解决办法是: 一: document.location.href = "${base}/rwfp/rwfpcontent" 用这种方法找到页面对应的Action的位置,这样做虽然页面刷新,但是刷新后数据会从第一页开始显示,并不是停留在原来的页面. 二: $("#yhsubmit").click() 这种方法跟分页相关,#yhsubmit为 复制代码 代码如下: &l

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

    1.问题描述: JS中定义widow.location = function(),页面关闭时,logout()函数未执行. window.onunload = function() { logout(); } function logout(reqParam, callback){ var userManageServiceUrl = "http://" + getServerAddr() + "/axis2/services/UserManageService";

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

    1.问题描述: JS中定义widow.location = function(),页面关闭时,logout()函数未执行. window.onunload = function() { logout(); } function logout(reqParam, callback){ var userManageServiceUrl = "http://" + getServerAddr() + "/axis2/services/UserManageService";

  • JS关闭窗口时产生的事件及用法示例

    本文实例讲述了JS关闭窗口时产生的事件及用法.分享给大家供大家参考,具体如下: /************ 关闭窗口,提交评价 **************/ window.onbeforeunload = function(){ var pageWidth = Math.max(window.top.document.body.scrollWidth, window.top.document.documentElement.scrollWidth); var pageHeight = Math

  • MySQL定时任务不能正常执行的原因分析及解决方法

    目录 前言 原因分析及解决方法 让定时任务快速执行 总结 前言 在使用数据库定时任务时,常常会出现定时任务不执行的问题,现对该问题出现的原因及解决方案做一些分析和整理. 原因分析及解决方法 当我们发现MySQL的定时任务没有执行时,首先去定时任务中查看[上次运行]时间是否正确,判断其是否正常执行,如果正常执行则需要考虑是否是事件逻辑不正确. 如果上次运行时间为空或者不正确,则需要查看数据库是否打开了定时任务,通过执行下列查询语句进行查询 show VARIABLES like '%event_s

  • 关闭浏览器时提示onbeforeunload事件

    onbeforeunload事件 它是这样用的: 复制代码 代码如下: <script language="javascript">      g_blnCheckUnload = true;      function RunOnBeforeUnload() {              if (g_blnCheckUnload) {        window.event.returnValue = 'You will lose any unsaved content'

  • 在Web关闭页面时发送Ajax请求的实现方法

    前言 有时候我们需要在用户离开页面的时候,做一些上报来记录用户行为.又或者是发送服务器ajax请求,通知服务器用户已经离开,比如直播间内的退房操作. 本文主要分两部分来讲解怎么完成退出行为的上报. 1.事件监听 浏览器有两个事件可以用来监听页面关闭,beforeunload和unload. beforeunload是在文档和资源将要关闭的时候调用的, 这时候文档还是可见的,并且在这个关闭的事件还是可以取消的.比如下面这种写法就会让用户导致在刷新或者关闭页面时候,有个弹窗提醒用户是否关闭. win

  • js点击事件的执行过程实例分析【冒泡与捕获】

    本文实例讲述了js点击事件的执行过程.分享给大家供大家参考,具体如下: js事件对象event包括很多事件类型,这里用onclick事件为例,探讨一下在js事件捕获机制和冒泡机制下的执行过程,以及如何阻止事件的捕获和冒泡. 首先看下当我们点击一个元素后,浏览器的执行过程. 1,当某个元素绑定的事件被触发时,这时浏览器就会从顶级document元素发出一个事件流 2,这个事件流顺着dom层级,一层一层向下找,直到遇到了触发事件的目标元素,这个查找的过程是捕获阶段 说明:捕获阶段,在查找每一层dom

  • C#动态生成DropDownList执行失败原因分析

    本文实例分析了C#动态生成DropDownList执行失败原因.分享给大家供大家参考.具体如下: 今天研究DDL控件的动态生成的时候遇到了点问题 ,当我写代码的时候发现点击button后 只能创建一个DDL控件,再点击就没有作用了,后来我在里面设置了变量,看看这个事件是不是没有执行,发现变量并没有改变,刚刚有点疑惑不解,后来发现当我触发其它事件的时候,控件消失了!我想,button的click事件会回传,而回传后新建的控件就会消失,我才明白,原来每次都有创建新的控件,只是每次再次点击button

  • 关于@Scheduled不执行的原因分析

    目录 @Scheduled不执行的原因 1. 今天用@Schedule做了一个定时任务 2. 首先遇到查到的一个解决方案 3. 还有版本说要在spring 4. 又查到版本说要在Bean上加上@Lazy(false) @Scheduled不生效的排查记录 @Scheduled 不生效的排查记录 @Scheduled不执行的原因 1. 今天用@Schedule做了一个定时任务 希望凌晨1点执行,代码如下 @Service public class ParseJsonService { @Sched

  • 如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”

    一.避免弹出提示框 在网上搜了很多,答案大都是设置window.onbeforeunload=null ,但是试用之后无效. 这个问题放了两天之后返回来再次想,终于找到了答案,在此和大家分享一下: 解除jquery离开页面弹出提(1) 先解除绑定在设置弹出内容为null. 复制代码 代码如下: $(function(){   $(window).unbind('beforeunload');   window.onbeforeunload = null;   }) 二.其他相关[摘要] (1)w

随机推荐