2

Operaはbeforeunloadでは動作しないと聞きました。また、IEの以前のバージョンもいくつかあります。では、どうすればこれらを一緒に使用できますか?以下を使用すると、Firefoxで2回実行されます(すべて動作します)。

$(window).bind('beforeunload', function () {

});

$(window).unload(function () {

});
4

4 に答える 4

3

ある種のフラグを使用する必要があります。または、次のようなものを使用できますhttp://documentcloud.github.com/underscore/#once

于 2012-05-24T19:59:10.953 に答える
3
function unloadHandler(m){
    alert(m);
}
if ($(window).unload) {
    $(window).unload(function() {
       unloadHandler("unload");
    });
} else if ($(window).beforeunload) {
    $(window).bind('beforeunload', function() {
        unloadHandler("beforeunload");
    });
}​
于 2012-05-24T20:08:26.043 に答える
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();
});
于 2012-05-24T20:11:59.693 に答える
2

私はJavascript/JQueryの人ではありませんが、メソッドを実行する必要があるかどうかを追跡するためにグローバル変数を使用することはできませんか?

何かのようなもの

var runme = true;
$(window).bind('beforeunload', function () {
    if(runme){


        runme=false;
    }

});

$(window).unload(function () {
    if(runme){


        runme=false;
    }
});
于 2012-05-24T20:01:37.283 に答える