我需要在离开浏览器之前执行一些代码,我实现了这个:
window.onbeforeunload = function () { return 'Are you sure?'; };
window.onunload = function () { releaseLocking(); };
与谷歌浏览器配合使用效果非常好。关闭GC时:显示一条消息,
我在使用Internet Explorer时遇到问题。
有什么想法吗?
我搜索了很多,但没有找到解决方案。
感谢。
更新
var releaseLocking = function() {
// Release only if lock is set on the current user
if (transport().lockedById() == 5) { // 5 is dummy (Jean Dupont for testing)
transport().lockedById(null);
transport().lockedTime(null);
return ctxTransport.saveChanges(SILENTSAVE);
}
};
答案 0 :(得分:0)
似乎IE有一个错误,即卸载事件不会在网站上的特定页面上触发。
unload事件从未被触发,因为页面的所有内容在导航到另一个页面之前尚未完成加载。
在卸载前尝试停止
试试这个:
function fixUnload() {
// Is there things still loading, then fake the unload event
if (document.readyState == 'interactive') {
function stop() {
// Prevent memory leak
document.detachEvent('onstop', stop);
// Call unload handler
unload();
};
// Fire unload when the currently loading page is stopped
document.attachEvent('onstop', stop);
// Remove onstop listener after a while to prevent the unload function
// to execute if the user presses cancel in an onbeforeunload
// confirm dialog and then presses the stop button in the browser
window.setTimeout(function() {
document.detachEvent('onstop', stop);
}, 0);
}
};
function unload() {
alert('Unload event occured.');
};
window.attachEvent('onunload', unload);
window.attachEvent('onbeforeunload', fixUnload);
答案 1 :(得分:0)
这些类型的事件是非常不可靠的...如果用户的浏览器崩溃了(大声笑即!)我能够通过使用心跳并每20-30秒轮询一次服务器来实现相同的结果(或者更长的idk你的持续时间可能是)并使用它来处理退出事件..我也在这个应用程序中有一个锁定机制。
祝你好运。