首页 新闻 赞助 找找看

IE浏览器beforeunload事件中执行$.ajax()的奇怪问题求助

0
悬赏园豆:100 [已解决问题] 解决于 2016-07-23 08:53

如题,代码如下:

$(document).ready(function () {

//窗体关闭时调用
$(window).bind('beforeunload', function () {


$.ajax({ url: "~/form.aspx?tid=eb85f40e-e492-4757-8c75-4eb054b5f5ab&action=Unregister", async: false });

});

});

目的:同一浏览器多页签同时登陆系统,当登陆时检测到已有页签登陆了,就提示关闭前一页签,关闭时用上面代码发送一个请求到后台清空一些对象,然后才能重新登陆。

问题:谷歌浏览器运行正常,达到目的;

        360浏览器极速模式下也正常;

        IE11浏览器运行第一次正常,后面第二次第三次就不生效了。

        然后F12调试,IE调试运行正常(调试状态下每一次都执行成功)。就是取消F12后又不行了,已知beforeunload是有执行的,但ajax请求第二次开始就进不了后台。

       百思不得其解,希望能获得大家的经验指导。

panjk的主页 panjk | 小虾三级 | 园豆:712
提问于:2016-07-22 17:43
< >
分享
最佳答案
0

ajax 请求 加时间戳

收获园豆:100
Постой! | 小虾三级 |园豆:1084 | 2016-07-22 18:04

的确是缓存问题,Ajax请求加上cache: false就可以了。非常感谢。
但还有一点就是360兼容模式下一直不行,第一次请求也不行。不清楚什么问题,你遇到过吗?

panjk | 园豆:712 (小虾三级) | 2016-07-23 08:52

@panjk: 360兼容模式是ie 几?

Постой! | 园豆:1084 (小虾三级) | 2016-07-23 08:58

@panjk: 可能的原因是 onbiforeunload  并没有能够阻止onunload 执行 你提交ajax 的同时 unload已经执行了。

Постой! | 园豆:1084 (小虾三级) | 2016-07-23 09:02

@Постой!: 好像是这样,因为刷新的时间可以入到onbiforeunload事件,但关闭就没进到onbiforeunload去,这种情况怎么处理呢?你有没经验?

panjk | 园豆:712 (小虾三级) | 2016-07-23 11:01

@panjk: 浏览器坑。没解决过,我就没有碰到过你这样的需求。

Постой! | 园豆:1084 (小虾三级) | 2016-07-23 12:24

@panjk:  return false 如何/ 或者e.preventDefault()  这是禁止 下一个事件 触发的js 如果 还必须要执行 onunload  我没辙了。。浏览器坑。。

Постой! | 园豆:1084 (小虾三级) | 2016-07-23 12:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册