关闭页面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,问题得到解决。
相关推荐
-
关闭页面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";
-
Jquery on方法绑定事件后执行多次的解决方法
这两天工作中遇到使用js动态加载内容,同时需要对加入的内容绑定点击事件的,当时想想了想可以使用内联的onclick 来实现,后来没有这样做,使用的是 on('click',function(){}) ,然而使用on方法的时候就发现,on 对同一个元素多次绑定同一个事件的时候,这个事件就会执行多次. 下面给出这种情况的实例: $(function(){ $(".add").click(function(eve){ $(".btn-area").append("
-
IE6浏览器下resize事件被执行了多次解决方法
在IE浏览器下,一次resize事件被执行了多次.这是IE6和IE7的一个比较广为认知的问题,这个问题在这两个版本的浏览器中表现有所不同,通常IE6下会比IE7下更为糟糕. 现在已经有了一个较好的解决方案,让jquery.wresize.js这个jquery插件来帮你: Js代码 复制代码 代码如下: /* =============================================================================== WResize is the
-
Jquery on方法绑定事件后执行多次的实现方法
这两天工作中遇到使用js动态加载内容,同时需要对加入的内容绑定点击事件的,当时想想了想可以使用内联的onclick 来实现,后来没有这样做,使用的是 on('click',function(){}) ,然而使用on方法的时候就发现,on 对同一个元素多次绑定同一个事件的时候,这个事件就会执行多次. 下面给出这种情况的实例: $(function(){ $(".add").click(function(eve){ $(".btn-area").append("
-
关于动态生成dom绑定事件失效的原因及解决方法
之前做项目都是直接用jquery的bind绑定事件,不过当时都不是动态生成dom元素,而是已经页面中原本存在的dom元素进行事件绑定,最近在测试给动态生成的dom绑定事件的时候发现事件失效,于是就测试了一下: 1. 事件失效的原因: (1)bind事件绑定只对dom中存在的元素有效,对于我们后来动态增加的元素是监测不到,所以绑定不了 (2)同样,当你使用var aa = document.getElementsByTagName("动态生成的元素");来获取动态生成的元素的时候也是获取
-
window.open打开窗口被拦截的快速解决方法
自己遇到的使用window.open打开新窗口被拦截的几种情况(使用的chrome浏览器,其他浏览器未测): 第一次:window.open(www.jb51.net),打开了新窗口,但是页面并没有加载出来,需要回车才能出来 解决方法:页面地址需要加上协议名称http://或者https:// 第二次:在ajax异步请求成功的回调函数中使用window.open方法,虽然加上了协议名称,但是,却并没有打开新窗口,在地址栏直接显示 被拦截 的字样 解决方法:有两种: 1.将ajax异步请求改为同步
-
Ajax请求响应中用window.open打开新窗口被拦截的解决方法
一.问题描述 ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但是会被浏览器给拦截了,需要用户点下. 二.问题分析 浏览器之所以拦截新开窗口是因为该操作并不是用户主动触发的,所以它认为这是不安全的就拦截了,即使 ajax 回调函数中模拟执行 click 或者 submit 等用户行为(trigger('click')),浏览器也会认为不是由用户主动触发的,因此不能被安全执行,所以被拦截. 说明: 1.如果是在 <a href="javascri
-
ASP.NET编译执行常见错误及解决方法汇总
1.检测到有潜在危险的 Request.Form 值 原因: (1)在提交数据的页面或webconfig中没有对validateRequest的属性进行正确的设置 (2)HTML里面写了两个<form>引起 解决: 方案一: 在.aspx文件头中加入这句: <%@ Page validateRequest="false" %> 方案二: 修改web.config文件: <configuration> <system.web> <pa
-
jquery trigger函数执行两次的解决方法
本文实例讲述了jquery trigger函数执行两次的解决方法.分享给大家供大家参考,具体如下: 一.问题如下: 有如下代码: <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <style type="text/css"> *{margin:0;pa
随机推荐
- JQuery实现的按钮倒计时效果
- jQuery中even选择器的定义和用法
- 彻底解决Spring MVC中文乱码问题的方案
- 深入解答关于Python的11道基本面试题
- asp.net Gridview里添加汇总行
- javascript实现阻止iOS APP中的链接打开Safari浏览器
- asp.net两级联动(包含添加和修改)
- php生成Android客户端扫描可登录的二维码
- JavaScript中合并数组的N种方法
- onclick与listeners的执行先后问题详细解剖
- jQuery插件zoom实现图片全屏放大弹出层特效
- 基于jquery的inputlimiter 实现字数限制功能
- javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
- 通过IP安全策略 WIN2003禁止PING
- 让IIS8支持WCF的更简单方法
- C语言中使用快速排序算法对元素排序的实例详解
- ASP.NET从字符串中查找字符出现次数的具体实现方法
- 对于Laravel 5.5核心架构的深入理解
- 深入理解JavaScript的async/await
- iOS判断是否越狱设备方法示例