web-dev-qa-db-ja.com

Firefox 4 onBeforeUnloadカスタムメッセージ

Firefox では、次のコマンドでカスタム確認ポップアップを作成できました。

window.onbeforeunload = function() {
   if (someCondition) {
      return 'Your stream will be turned off';
   }
}

Firefox 4では、カスタムメッセージが表示されません。それが提供するデフォルトのメッセージは、私のアプリケーションが行うことに対して正確ではありません。

firefox 4 confirm

このデフォルトのメッセージは上書きできますか?

69
JoJo

[〜#〜] mdn [〜#〜] から:

Firefox 4以降では、返された文字列はユーザ​​ーに表示されないことに注意してください。 Bug 588292 を参照してください。

この「バグ」は、実際には(疑わしい)機能です。したがって、Firefox 4でメッセージを表示する方法はありません。カスタム文字列を表示できます。

52
ThiefMaster

上記の回答に加えて、回避策を改善しました。

ここでjqueryを使用しました。デフォルトのJavaScript関数も使用できます。

$(window).bind('beforeunload', function() {
    if(/Firefox[\/\s](\d+)/.test(navigator.userAgent) && new Number(RegExp.$1) >= 4) {
        if(confirm("Are you Sure do you want to leave?")) {
            history.go();
        } else {
            window.setTimeout(function() {
                window.stop();
            }, 1);
        }
    } else {
        return "Are you Sure do you want to leave?";
    }
});

Firefox 11でもテストおよび動作しています。:)

32
Nasif

私の回避策は、onbeforeunloadにアラートを表示することです:

window.onbeforeunload=function() {
    if ( /Firefox[\/\s](\d+)/.test(navigator.userAgent) && new Number(RegExp.$1) >= 4) {
        alert("Blah blah. You have to confirm you are leaving this page in the next dialogue.");
    }
    return "Blah blah."; 
} 

(Firefoxには2つのダイアログが表示され、別の場所には1つのダイアログが表示されます。)

3
xmedeko

確認メッセージで実装してみてください、

window.onbeforeunload=function(){
   return confirm("Are you sure??");
}

もちろん、ユーザーが確認するとFF4メッセージが表示されるため、ログイン/訪問時にサイトごとに1回表示する方がよいでしょう。 Cookieがトリックを行う必要があります。

1
Jguru