Seringkali ada kebutuhan untuk ini, yaitu, ketika meninggalkan halaman web tertentu, pengguna tidak harus mengklik untuk keluar, yang akan menyebabkan sesi tidak dihancurkan pada waktunya. Untuk mewujudkan fungsi logout otomatis ketika pengguna meninggalkan halaman, perintah logout perlu dikirim dalam fungsi penanganan acara OnBeforeunload dari halaman web. Tempat ini sebagian besar diimplementasikan menggunakan Ajax. Terkadang juga melibatkan masalah akses lintas domain. Ada masalah kompatibilitas browser di tempat ini.
Ada dua poin ketidakcocokan browser saat berhadapan dengan persyaratan ini:
1. Ketidakcocokan saat berhadapan dengan Ajax, jQuery digunakan untuk menyelesaikannya di sini.
2. Ketidakcocokan Saat Mengirim Permintaan AJAX
Kode utamanya adalah sebagai berikut:
function logout () {var logoutUrl = "xxxx"; // URL digunakan untuk keluar dari pengguna IF (LOGOUTURL == "") kembali; var userAgent = navigator.useragent.tolowercase (); if (useragent.indexof ("msie")>-1) {// ie $ .Ajax ({url: LogoutUrl, crossdomain: true, async: false, dataType: "jsonp"}); } else {// firefox chrome $ .AJAX ({url: logoutUrl, async: false}); }} window.onbeforeunload = function () {logout (); };Deskripsi Kode:
Firefox memiliki tingkat keamanan yang tinggi saat memproses JS. Banyak izin yang dapat digunakan JS di IE dan Chrome dibatasi di Friefox, jadi
if (useragent.indexof ("msie")>-1) {// yaitu} else {// firefox chrome}Kode ini menentukan jenis browser saat ini.
Kode yang kompatibel untuk Firefox dan Chrome adalah sebagai berikut:
$ .AJAX ({url: logoutUrl, async: false});Async perlu diatur ke false, yaitu, itu sinkron, dan metode asinkron yang sebenarnya tidak dapat digunakan, jika tidak permintaan tidak dapat dikirim. Bahkan, Chrome juga cocok untuk kode IE berikut. Ketika browser dimatikan, perintah Logout akan dikirim secara otomatis. Namun, saat mengklik tombol refresh browser, ia juga berharap untuk secara otomatis mencatat pengguna. Chrome hanya dapat menggunakan baris kode di atas untuk mengeluarkan permintaan logout.
Kode yang kompatibel untuk IE adalah sebagai berikut:
$ .AJAX ({url: logoutUrl, crossdomain: true, async: false, dataType: "jsonp"});CrossDomain diatur ke true untuk menyelesaikan masalah akses lintas domain. Jika masalah ini tidak ada, properti ini dapat diabaikan. Yang terbaik adalah mengatur atribut async ke false, dan true juga baik -baik saja. Properti DataType: "JSONP" juga digunakan untuk menyelesaikan masalah akses lintas domain. Ini digunakan bersama dengan crossdomain. Tidak ada masalah lintas domain. Dua properti ini dapat dihilangkan.
Kode di atas diuji di IE9, Chrome27, dan Firefox21.
Di atas adalah diskusi singkat yang dibawa editor kepada Anda tentang acara Window.onbeforeunload () memanggil Ajax (judul). Saya harap semua orang mendukung wulin.com ~