Mencegah halaman web dari menavigasi jauh menggunakan JavaScript
Cara mencegah halaman web dari menavigasi jauh menggunakan JavaScript?
116
9
Cara mencegah halaman web dari menavigasi jauh menggunakan JavaScript?
Menggunakan
onunload
hanya memungkinkan anda untuk menampilkan pesan, tapi itu tidak akan mengganggu navigasi (karena terlambat). Namun, anda dapat menggunakanonbeforeunload
dan itu akan mengganggu navigasi:Edit: Dihapus
confirm()
kembali pernyataan seperti ini menyebabkan mengkonfirmasi jendela seperti yang diharapkan, tetapi juga menunjukkan kedua mengkonfirmasi dengan hasil konfirmasi terlebih dahulu.Tidak seperti metode lain yang disajikan di sini, ini sedikit kode yang akan not menyebabkan browser untuk menampilkan peringatan menanyakan pengguna apakah dia ingin meninggalkan; sebaliknya, itu eksploitasi evented sifat DOM untuk redirect kembali ke halaman ini (dan dengan demikian membatalkan navigasi) sebelum browser memiliki kesempatan untuk membongkar itu dari memori.
Sejak itu karya-karya oleh hubungan arus pendek navigasi langsung, itu tidak dapat digunakan untuk mencegah halaman yang tertutup; namun, hal itu dapat digunakan untuk menonaktifkan frame-penghilang.
Disclaimer: Anda harus tidak pernah melakukan hal ini. Jika sebuah halaman memiliki bingkai-penghilang kode pada itu, silahkan menghormati keinginan penulis.
Saya berakhir dengan versi yang sedikit berbeda:
Di tempat lain saya menetapkan bendera kotor untuk benar ketika membentuk mendapat kotor (atau saya jika ingin mencegah menavigasi jauh). Hal ini memungkinkan saya untuk dengan mudah mengontrol apakah atau tidak pengguna mendapatkan Konfirmasi Navigasi cepat.
Dengan teks pada jawaban yang dipilih anda lihat berlebihan petunjuknya:
Di Ayman's contoh dengan kembali palsu anda mencegah jendela browser/tab dari penutupan.
Setara dengan yang lebih modern dan browser yang kompatibel, menggunakan modern addEventListener Api.
Sumber: https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload
Setara dengan jawaban yang diterima di jQuery 1.11:
[JSFiddle contoh](http://jsfiddle.net/485xsaao/)
altCognito's jawaban yang digunakan
membongkar
peristiwa yang terjadi terlalu terlambat untuk JavaScript untuk menggugurkan navigasi.Gunakan onunload.
Untuk jQuery, saya pikir ini bekerja seperti:
Yang menunjukkan pesan kesalahan mungkin duplikat pesan kesalahan browser sudah menampilkan. Di chrome, 2 mirip pesan kesalahan yang ditampilkan satu demi satu dalam jendela yang sama.
Di chrome, teks yang ditampilkan setelah pesan khusus adalah: "Apakah anda yakin ingin meninggalkan halaman ini?". Di firefox, tidak menampilkan kustom kami pesan kesalahan sama sekali (tapi masih menampilkan dialog).
Yang lebih tepat pesan kesalahan akan menjadi:
Atau stackoverflow gaya: "Anda telah mulai menulis atau mengedit posting."
Jika anda menangkap browser kembali/maju tombol dan don't ingin untuk menavigasi, anda dapat menggunakan:
Jika tidak, anda dapat menggunakan beforeunload acara, tapi pesan yang mungkin atau mungkin tidak bekerja cross-browser, dan membutuhkan kembali sesuatu yang memaksa built-in cepat.