我听说Opera没有使用beforeunload。还有一些早期版本的IE浏览器。那我怎么能一起使用这些呢?如果我在下面使用它,它在Firefox中运行2次(它们都可以工作)。
$(window).bind('beforeunload', function () {
});
$(window).unload(function () {
});
答案 0 :(得分:3)
您需要使用排序标记,或者您可以使用此类http://documentcloud.github.com/underscore/#once
答案 1 :(得分:3)
function unloadHandler(m){
alert(m);
}
if ($(window).unload) {
$(window).unload(function() {
unloadHandler("unload");
});
} else if ($(window).beforeunload) {
$(window).bind('beforeunload', function() {
unloadHandler("beforeunload");
});
}
答案 2 :(得分:3)
有几种方法可以做到这一点。以下示例使用全局标志非常简单。
var hasUnloadBeenHandled = false;
function onUnload() {
if (hasUnloadBeenHandled) {
return;
}
//Whatever you want to be handled on unload OR on beforeunload
hasUnloadBeenHandled = true;
}
$(window).bind('beforeunload', function () {
onUnload();
});
$(window).unload(function () {
onUnload();
});
答案 3 :(得分:2)
我不是Javascript / JQuery人,但你不能只使用全局变量来跟踪该方法是否应该运行?
类似
var runme = true;
$(window).bind('beforeunload', function () {
if(runme){
runme=false;
}
});
$(window).unload(function () {
if(runme){
runme=false;
}
});