关闭页面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
随机推荐
- JavaScript实现树的遍历算法示例【广度优先与深度优先】
- centOS7安装docker的详细步骤
- 初识javascript 文档碎片
- cmos下屏蔽intel Q35主板E-SATA接口的设置图文
- Android中使用ScrollView实现滑动到底部显示加载更多
- node+koa实现数据mock接口的方法
- JavaScript中利用Array和Object实现Map的方法
- javascript 浏览器判断 绑定事件 arguments 转换数组 数组遍历
- js获取页面及个元素高度、宽度的代码
- JavaScript实现动画打开半透明提示层的方法
- 用批处理实现批量安装字体的bat文件
- spring boot整合hessian的示例
- js内置对象处理_打印学生成绩单的简单实现
- 浅析被遗忘的SQLServer比较运算符修饰词
- 2则自己编写的jQuery特效分享
- cnblogs中在闪存中屏蔽某人的实现代码
- Spring Boot发送邮件详解
- Python基于贪心算法解决背包问题示例
- spring cloud consul注册的服务报错critical的解决
- php实现QQ小程序发送模板消息功能