我听说 Opera 不支持 beforeunload。还有一些早期版本的 IE。那么我怎样才能将它们一起使用呢?如果我在下面使用,它会在 Firefox 中运行 2 次(它们都可以工作)。
$(window).bind('beforeunload', function () {
});
$(window).unload(function () {
});
我听说 Opera 不支持 beforeunload。还有一些早期版本的 IE。那么我怎样才能将它们一起使用呢?如果我在下面使用,它会在 Firefox 中运行 2 次(它们都可以工作)。
$(window).bind('beforeunload', function () {
});
$(window).unload(function () {
});
function unloadHandler(m){
alert(m);
}
if ($(window).unload) {
$(window).unload(function() {
unloadHandler("unload");
});
} else if ($(window).beforeunload) {
$(window).bind('beforeunload', function() {
unloadHandler("beforeunload");
});
}
您需要使用某种标志,或者您可以使用类似http://documentcloud.github.com/underscore/#once
有几种方法可以做到这一点。以下示例使用全局标志非常简单。
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();
});
我不是 Javascript/JQuery 人,但你不能只使用全局变量来跟踪该方法是否应该运行吗?
就像是
var runme = true;
$(window).bind('beforeunload', function () {
if(runme){
runme=false;
}
});
$(window).unload(function () {
if(runme){
runme=false;
}
});