Rumah  >  Artikel  >  hujung hadapan web  >  Mengapa Firefox, Safari dan Pengendali Acara Tetingkap Sokongan Opera Tidak Suka `onbeforeunload` dan `ounload`?

Mengapa Firefox, Safari dan Pengendali Acara Tetingkap Sokongan Opera Tidak Suka `onbeforeunload` dan `ounload`?

Barbara Streisand
Barbara Streisandasal
2024-11-01 03:53:02945semak imbas

Why Don't Firefox, Safari, and Opera Support Window Event Handlers Like `onbeforeunload` and `onunload`?

Pengendali Acara Tetingkap: Sokongan Terhad dalam Firefox, Safari dan Opera

Dalam pembangunan web, selalunya perlu untuk mengendalikan acara yang berkaitan dengan tingkah laku tetingkap penyemak imbas, seperti menutup atau memunggah halaman. Walau bagaimanapun, pengendali acara popular window.onbeforeunload dan window.ounload mempamerkan sokongan yang tidak konsisten merentas penyemak imbas yang berbeza.

Penerangan Masalah

Seperti yang anda perhatikan dalam aplikasi sembang anda, tetingkap .onbeforeunload dan window.ounload berfungsi seperti yang diharapkan dalam Internet Explorer dan Chrome. Walau bagaimanapun, isu berikut timbul dalam penyemak imbas lain:

  • window.onbeforeunload tidak berfungsi dalam Opera dan mesej pengesahan tidak dipaparkan.
  • window.onunload tidak berfungsi dalam Safari, Opera, dan Firefox.

Had Sokongan Penyemak Imbas

Malangnya, penyemak imbas yang anda sebutkan mempunyai had apabila menyokong pengendali acara ini:

  • Opera: onbeforeunload tidak disokong kerana kebimbangan keselamatan.
  • Safari: onbeforeunload tidak disokong sepenuhnya disebabkan pengoptimuman prestasi. Acara pagehide boleh digunakan sebagai alternatif.
  • Firefox: onunload tidak disokong sepenuhnya kerana pepijat yang diketahui.

Penyelesaian Alternatif

Memandangkan pengendali acara yang anda gunakan tidak disokong dalam sesetengah penyemak imbas, berikut ialah beberapa penyelesaian alternatif:

  • Acara Pageehide (Safari): Gunakan pagehide dan bukannya onunload dalam Safari.
  • API Keterlihatan Halaman: Laksanakan API Keterlihatan Halaman untuk menjejaki perubahan keterlihatan halaman dan menggesa pengguna seperti yang diperlukan.
  • SessionStorage : Simpan maklumat sesi (cth., ID sesi) dalam sessionStorage dan semak kehadirannya dalam penyemak imbas lain untuk melakukan tindakan log keluar.

Nota Penting:

  • Contoh kod yang disediakan mungkin tidak berfungsi dalam penyemak imbas yang tidak menyokong onbeforeunload atau onunload.
  • Sentiasa pertimbangkan keserasian penyemak imbas apabila menggunakan pengendali acara untuk memastikan kefungsian optimum merentas persekitaran yang berbeza.

Atas ialah kandungan terperinci Mengapa Firefox, Safari dan Pengendali Acara Tetingkap Sokongan Opera Tidak Suka `onbeforeunload` dan `ounload`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn