如题,代码如下:
$(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请求第二次开始就进不了后台。
百思不得其解,希望能获得大家的经验指导。
ajax 请求 加时间戳
的确是缓存问题,Ajax请求加上cache: false就可以了。非常感谢。
但还有一点就是360兼容模式下一直不行,第一次请求也不行。不清楚什么问题,你遇到过吗?
@panjk: 360兼容模式是ie 几?
@panjk: 可能的原因是 onbiforeunload 并没有能够阻止onunload 执行 你提交ajax 的同时 unload已经执行了。
@Постой!: 好像是这样,因为刷新的时间可以入到onbiforeunload事件,但关闭就没进到onbiforeunload去,这种情况怎么处理呢?你有没经验?
@panjk: 浏览器坑。没解决过,我就没有碰到过你这样的需求。
@panjk: return false 如何/ 或者e.preventDefault() 这是禁止 下一个事件 触发的js 如果 还必须要执行 onunload 我没辙了。。浏览器坑。。