web-dev-qa-db-ja.com

MozillaFirefoxがwindow.onbeforeunloadで機能しない

私は_window.onbeforeunload_を使用して、ウィンドウを閉じるときにユーザーにメッセージを表示しています。この関数はchromeおよびIEですが、機能しません。 Firefoxで動作する、私はFirefoxバージョンを使用しています_26.0_私は多くを試しましたが、意味はありません、誰かがこれのようにFirefoxのバグだと言いました post そして別の人はこの中で post javascriptとjqueryを使用して利用可能なすべてのソリューションを試しましたが、機能しません。確認ダイアログを表示しますが、その後にブラウザのデフォルトダイアログが表示され、満足できません。また、preventDefault()を使用してブラウザのデフォルトダイアログが表示されないようにしましたが、意味がありません!!この問題の解決策があれば、それは素晴らしいことです。_window.onbeforeunload_の使用方法は次のとおりです。

_<script>
window.onbeforeunload = confirmWinClose();
function confirmWinClose() {
     var myVar ='${isFireFox}';
     if(myVar=='true'){
         return confirm(confirmExamClose);
     }else{
         return confirmExamClose;
     }

}
<script>
_

注:isFireFoxは、_User-Agent_ヘッダーを使用してブラウザーのタイプを知るために使用したjsp変数であり、confirmExamCloseはユーザーに表示するメッセージです。

7
Java Player

これがFirefoxとChromeの実用的なソリューションです。 SafariとOperaではまだテストしていません。

var myEvent = window.attachEvent || window.addEventListener;
var chkevent = window.attachEvent ? 'onbeforeunload' : 'beforeunload'; /// make IE7, IE8 compitable

myEvent(chkevent, function(e) { // For >=IE7, Chrome, Firefox
    var confirmationMessage = 'Are you sure to leave the page?';
    (e || window.event).returnValue = confirmationMessage;
    return confirmationMessage;
});
13
faisale

Firefox onbeforeunloadソリューションを2日間かけて探しましたが、運が悪かったので、これに一生懸命取り組み、ちょっとしたトリックでそれを行いました。

私のトリックでは、ユーザーはブラウザウィンドウを少なくとも1回クリックする必要があります。ユーザーがウィンドウをクリックしてから戻るボタンをクリックするか、ページを更新するか、ページを終了しようとすると、onbeforeunloadイベントが発生します。

$(window).on('beforeunload', function () {
    return "Are you sure you want to exit this page?";
});
$(window).one('click',function(){
    alert('hi');
    $('.javavoid').trigger('click');
});
.hide{display:none;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
    <a class="hide javavoid" href="javascript:void(0)">asdf</a>
    <p>Welcome, click anywhere then click on back button or refresh page</p>
</body>
4
dharmx

MDNで指定されたコードを使用すると、firefox/chrome/IE11で機能します(今のところ他のブラウザーを試していません)。

window.onbeforeunload = function (e) {
  var e = e || window.event;

  // For IE and Firefox
  if (e) {
    e.returnValue = 'Any string';
  }

  // For Safari
  return 'Any string';
};

ここにドキュメントがあります: Mdn window.onbeforeunload doc

1
vince4128