Langsung ke konten utama

Mozilla firefox tidak berfungsi dengan window.onbeforeunload


7
Saya menggunakan window.onbeforeunloaduntuk menampilkan pesan kepada pengguna di windows tutup, fungsinya bekerja dengan baik dengan chrome dan IE tetapi tidak bekerja dengan Firefox, saya menggunakan versi firefox 26.0saya telah mencoba banyak tetapi tanpa berarti, seseorang berkata bahwa itu bug di firefox seperti dalam posting ini dan yang lain menyarankan beberapa solusi seperti pada posting ini saya mencoba semua solusi yang tersedia menggunakan javascript dan jquery tetapi tidak berfungsi, sekarang saya menampilkan dialog konfirmasi tetapi dialog default browser muncul setelah itu dan Saya tidak puas dengan itu, saya mencoba juga untuk mencegah dialog default browser muncul menggunakan preventDefault()tetapi juga tanpa berarti !! jika ada solusi untuk masalah ini akan sangat bagus, inilah cara saya menggunakan window.onbeforeunload:
<script>
window.onbeforeunload = confirmWinClose();
function confirmWinClose() {
     var myVar ='${isFireFox}';
     if(myVar=='true'){
         return confirm(confirmExamClose);
     }else{
         return confirmExamClose;
     }

}
<script>
Catatan: isFireFoxadalah variabel jsp yang saya gunakan untuk mengetahui tipe browser menggunakan User-AgentHeader dan confirmExamClosemerupakan pesan yang saya tampilkan kepada pengguna.

4 Jawaban

13
Inilah solusi yang berfungsi untuk Firefox dan Chrome. Saya belum diuji di Safari dan 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;
});
  • 1
    meskipun ini berfungsi, pesan konfirmasi tidak ditampilkan di firefox. pergi untuk mencari cara untuk melakukan ini ... -  Jim 29 Okt '14 jam 3:35
  • itu adalah perilaku firfox @ Jim, firefox tidak mengizinkan untuk menampilkan pesan khusus. -  faisale 2 Nov '14 jam 20:28
  • @faisale saya tidak ingin mengirim pesan konfirmasi, bagaimana saya bisa mencapai ini? -  sadia 17 Nov 16 jam 12:38
  • Saya tidak mengerti, kode di atas adalah untuk menampilkan pesan konfirmasi, jika Anda tidak ingin menampilkannya maka berkomentar kode di atas di html Anda. -  faisale 11 Okt '17 jam 10:23
4
Saya mencari onbeforeunloadsolusi Firefox selama 2 hari dan tidak berhasil, jadi saya bekerja keras untuk hal ini, dan melakukannya dengan sedikit trik.
Dalam trik saya, pengguna perlu mengklik pada jendela browser setidaknya sekali. Jika pengguna mengklik pada jendela dan kemudian mengklik tombol kembali, me-refresh halaman, atau mencoba untuk keluar dari halaman, onbeforeunloadacara akan menyala,
$(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>
1
Menggunakan kode yang diberikan dalam MDN berfungsi untuk saya di firefox / chrome / IE11 (belum mencoba peramban lain untuk saat ini).
window.onbeforeunload = function (e) {
  var e = e || window.event;

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

  // For Safari
  return 'Any string';
};
di sini adalah doc: Mdn window.onbeforeunload doc
-1
Mengapa Anda melakukan sniffing peramban di sini? Cabang "Firefox" dari kode Anda mengembalikan nilai pengembalian window.confirm, yang merupakan boolean. Tapi boolean tidak bisa dipanggil, jadi menugaskannya window.onbeforeunloadsama dengan menetapkan nol.
Apa yang Anda mungkin ingin lakukan adalah menghapus sniffing browser dan lakukan:
window.onbeforeunload = confirmExamClose;

Komentar

Postingan populer dari blog ini

Login, Session, dan Logout

Cara Membuat File Setup / Installer Aplikasi Sendiri dengan Inno Setup Compiler