监听页面ajax请求,window.onbeforeunload() 事件调用ajax来监听浏览器关闭或者页面关闭...

window.onbeforeunload() 事件调用ajax

经常有这样的需求,就是在离开某个web页面时,用户不一定点注销,这样会导致会话不能及时销毁。为实现用户离开页面时,自动注销功能,需要在web页面的onbeforeunload事件处理函数中发送注销命令。这个地方大多用Ajax实现。有时还涉及到跨域访问的问题。这个地方就存在浏览器的兼容性问题。

浏览器在处理这个需求时的不兼容性有如下两点:

1、处理Ajax时的不兼容性,这里使用jQuery来解决。

2、在发送Ajax请求时的不兼容性

主要代码如下:

functionlogout() {

varlogoutURL ="xxxx";//用于注销用户的url

if(logoutURL =="")return;

varuserAgent = navigator.userAgent.toLowerCase();

if(userAgent.indexOf("msie")>-1) {//IE

$.ajax({ url: logoutURL, crossDomain:true, async:false, dataType:"jsonp"});

}else{//FireFox Chrome

$.ajax({ url: logoutURL, async:false});

}

}

window.onbeforeunload =function() {

logout();

};

function logout() {

var logoutURL = "xxxx"; //用于注销用户的url

if (logoutURL == "") return;

var userAgent = navigator.userAgent.toLowerCase();

if(userAgent.indexOf("msie")>-1) { //IE

$.ajax({ url: logoutURL, crossDomain: true, async: false, dataType: "jsonp" });

}else { //FireFox Chrome

$.ajax({ url: logoutURL, async: false });

}

}

window.onbeforeunload = function () {

logout();

};

代码说明:

firefox在处理js时的安全级别较高,很多IE、Chrome中js可以使用的权限在Friefox中被限制,因此通过

if(userAgent.indexOf("msie")>-1) {//IE

}else{//FireFox Chrome

}

$.ajax({ url: logoutURL, async:false});

$.ajax({ url: logoutURL, crossDomain:true, async:false, dataType:"jsonp"});

  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值