Mozilla firefox tidak berfungsi dengan window.onbeforeunload
7
Saya menggunakan
window.onbeforeunload
untuk 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.0
saya 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:
isFireFox
adalah variabel jsp yang saya gunakan untuk mengetahui tipe browser menggunakan User-Agent
Header dan confirmExamClose
merupakan pesan yang saya tampilkan kepada pengguna.
Tambahkan komentar
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;
});
- 1meskipun 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
onbeforeunload
solusi 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,
onbeforeunload
acara 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.onbeforeunload
sama dengan menetapkan nol.
Apa yang Anda mungkin ingin lakukan adalah menghapus sniffing browser dan lakukan:
window.onbeforeunload = confirmExamClose;