Apakah ada cara untuk menjalankan kode JavaScript akhir saat pengguna menutup jendela browser atau menyegarkan halaman?
Saya sedang memikirkan sesuatu yang mirip dengan onload tetapi lebih seperti onclose? Terima kasih.
Saya tidak suka metode onbeforeunload, yang selalu menghasilkan kotak konfirmasi yang muncul (tinggalkan halaman / tetap di mozilla) atau (muat ulang / jangan muat ulang di chrome). Apakah ada cara untuk mengeksekusi kode secara diam-diam?
javascript
browser
Peter
sumber
sumber
Jawaban:
Ada
window.onbeforeunload
danwindow.onunload
, yang digunakan secara berbeda tergantung pada browser. Anda dapat menentukannya baik dengan mengatur properti jendela ke fungsi, atau menggunakan.addEventListener
:Biasanya,
onbeforeunload
digunakan jika Anda perlu menghentikan pengguna meninggalkan halaman (mis. Pengguna sedang mengerjakan beberapa data yang belum disimpan, jadi dia harus menyimpan sebelum keluar).onunload
tidak didukung oleh Opera , sejauh yang saya tahu, tetapi Anda selalu dapat mengatur keduanya.sumber
Oke, saya menemukan solusi yang berfungsi untuk ini, itu terdiri dari menggunakan
beforeunload
acara dan kemudian membuat pawang kembalinull
. Ini mengeksekusi kode yang diinginkan tanpa kotak konfirmasi yang muncul. Ini berjalan seperti ini:Semoga ini membantu.
sumber
return false;
melakukan hal yang sama (yaitu mencegah perilaku default) dan itu lebih benar secara semantik.Terkadang Anda mungkin ingin memberi tahu server bahwa pengguna meninggalkan halaman. Ini berguna, misalnya, untuk membersihkan gambar yang belum disimpan yang disimpan sementara di server, untuk menandai pengguna itu sebagai "luring", atau untuk masuk saat mereka selesai sesinya.
Secara historis, Anda akan mengirim permintaan AJAX dalam
beforeunload
fungsi tersebut, namun ini memiliki dua masalah. Jika Anda mengirim permintaan asinkron, tidak ada jaminan bahwa permintaan tersebut akan dijalankan dengan benar. Jika Anda mengirim permintaan sinkron, itu lebih dapat diandalkan, tetapi browser akan berhenti hingga permintaan selesai. Jika ini adalah permintaan yang lambat, ini akan menjadi ketidaknyamanan yang sangat besar bagi pengguna.Untungnya, sekarang kami punya
navigator.sendBeacon()
. Dengan menggunakansendBeacon()
metode ini, data ditransmisikan secara asinkron ke server web saat Agen Pengguna memiliki kesempatan untuk melakukannya, tanpa menunda pembongkaran atau memengaruhi kinerja navigasi berikutnya. Ini menyelesaikan semua masalah dengan pengiriman data analitik: data dikirim dengan andal, dikirim secara asinkron, dan tidak memengaruhi pemuatan halaman berikutnya. Berikut contoh penggunaannya:sendBeacon()
adalah didukung di:Saat ini TIDAK didukung di:
Berikut ini polyfill untuk sendBeacon () jika Anda perlu menambahkan dukungan untuk browser yang tidak didukung. Jika metode ini tidak tersedia di browser, itu akan mengirim permintaan AJAX sinkron sebagai gantinya.
sumber
http://example.com/script.php?token=something&var1=val1&var2=val2
memasukkan nilai-nilai itu ke dalam GET.versi jQuery:
Perbarui : jQuery 3:
Terima kasih Garrett
sumber
Dokumentasi di sini mendorong mendengarkan event onbeforeunload dan / atau menambahkan event listener di window.
Anda juga dapat mengisi properti jendela .onunload atau .onbeforeunload dengan fungsi atau referensi fungsi.
Meskipun perilaku tidak distandarisasi di seluruh browser, fungsi tersebut dapat mengembalikan nilai yang akan ditampilkan browser saat mengonfirmasi apakah akan meninggalkan halaman.
sumber
Anda bisa menggunakan
window.onbeforeunload
.sumber
Acara tersebut dipanggil
beforeunload
, sehingga Anda dapat menetapkan fungsi kewindow.onbeforeunload
.sumber
Anda dapat mencoba sesuatu seperti ini:
sumber