มักจะมีความจำเป็นสำหรับสิ่งนี้นั่นคือเมื่อออกจากหน้าเว็บที่แน่นอนผู้ใช้ไม่จำเป็นต้องคลิกเพื่อออกจากระบบซึ่งจะทำให้เซสชันไม่ถูกทำลายในเวลา เพื่อให้ตระหนักถึงฟังก์ชั่นการออกจากระบบอัตโนมัติเมื่อผู้ใช้ออกจากหน้าคำสั่ง Logout จะต้องถูกส่งในฟังก์ชั่นการจัดการเหตุการณ์ OnBeForeAnload ของหน้าเว็บ สถานที่นี้ส่วนใหญ่จะถูกนำไปใช้โดยใช้ AJAX บางครั้งมันก็เกี่ยวข้องกับปัญหาการเข้าถึงข้ามโดเมน มีปัญหาความเข้ากันได้ของเบราว์เซอร์ในสถานที่นี้
มีสองจุดที่เข้ากันไม่ได้ของเบราว์เซอร์เมื่อจัดการกับข้อกำหนดนี้:
1. ความไม่ลงรอยกันเมื่อต้องรับมือกับ Ajax jQuery ใช้เพื่อแก้ปัญหาที่นี่
2. ความไม่ลงรอยกันเมื่อส่งคำขอ AJAX
รหัสหลักมีดังนี้:
ฟังก์ชั่น logout () {var logoutUrl = "xxxx"; // url ที่ใช้ในการออกจากระบบผู้ใช้ถ้า (logoutUrl == "") ส่งคืน; var useragent = navigator.useragent.toLowerCase (); if (useragent.indexof ("msie")>-1) {// ie $ .ajax ({url: logouturl, crossdomain: true, async: false, tatatype: "jsonp"}); } else {// firefox chrome $ .ajax ({url: logouturl, async: false}); }} window.onbeforeunload = function () {logout (); -รหัสคำอธิบาย:
Firefox มีระดับความปลอดภัยสูงเมื่อประมวลผล JS การอนุญาตมากมายที่ JS สามารถใช้ใน IE และ Chrome ถูก จำกัด ใน Friefox ดังนั้น
if (useragent.indexof ("msie")>-1) {// ie} else {// firefox chrome}รหัสนี้กำหนดประเภทเบราว์เซอร์ปัจจุบัน
รหัสที่เข้ากันได้สำหรับ Firefox และ Chrome มีดังนี้:
$ .ajax ({url: logouturl, async: false});async จะต้องตั้งค่าเป็นเท็จนั่นคือมันเป็นแบบซิงโครนัสและไม่สามารถใช้วิธีการแบบอะซิงโครนัสจริงมิฉะนั้นคำขออาจไม่ถูกส่งออก ในความเป็นจริง Chrome ยังเหมาะสำหรับรหัส IE ต่อไปนี้ เมื่อเบราว์เซอร์ถูกปิดคำสั่งออกจากระบบจะถูกส่งโดยอัตโนมัติ อย่างไรก็ตามเมื่อคลิกปุ่มรีเฟรชของเบราว์เซอร์ก็หวังที่จะออกจากระบบผู้ใช้โดยอัตโนมัติ Chrome สามารถใช้รหัสด้านบนเพื่อออกคำขอออกจากระบบเท่านั้น
รหัสที่เข้ากันได้สำหรับ IE มีดังนี้:
$ .ajax ({url: logouturl, crossdomain: true, async: false, datatype: "jsonp"});Crossdomain ถูกตั้งค่าเป็นจริงเพื่อแก้ปัญหาการเข้าถึงข้ามโดเมน หากปัญหานี้ไม่มีอยู่คุณสมบัตินี้สามารถละเว้นได้ เป็นการดีที่สุดที่จะตั้งค่าแอตทริบิวต์ async เป็นเท็จและความจริงก็โอเคเช่นกัน ข้อมูลประเภท: คุณสมบัติ "JSONP" ยังใช้เพื่อแก้ปัญหาการเข้าถึงข้ามโดเมน มันถูกใช้ร่วมกับ Crossdomain ไม่มีปัญหาข้ามโดเมน คุณสมบัติทั้งสองนี้สามารถละเว้นได้
รหัสข้างต้นได้รับการทดสอบใน IE9, Chrome27 และ Firefox21
ข้างต้นคือการสนทนาสั้น ๆ ที่บรรณาธิการนำคุณเกี่ยวกับ window.onbeforeunload () เหตุการณ์เรียก Ajax (ชื่อเรื่อง) ฉันหวังว่าทุกคนจะสนับสนุน wulin.com ~