beforeunload
เหตุการณ์ fires เมื่อใดก็ตามที่ผู้ใช้ออกจากหน้าเว็บของคุณด้วยเหตุผลใดก็ตาม
ตัวอย่างเช่นมันจะถูกไล่ออกหากผู้ใช้ส่งแบบฟอร์มคลิกที่ลิงค์ปิดหน้าต่าง (หรือแท็บ) หรือไปที่หน้าใหม่โดยใช้แถบที่อยู่ช่องค้นหาหรือที่คั่นหน้า
คุณสามารถยกเว้นการส่งแบบฟอร์มและการเชื่อมโยงหลายมิติ (ยกเว้นจากเฟรมอื่น ๆ ) ด้วยรหัสต่อไปนี้:
var inFormOrLink;
$('a').on('click', function() { inFormOrLink = true; });
$('form').on('submit', function() { inFormOrLink = true; });
$(window).on("beforeunload", function() {
return inFormOrLink ? "Do you really want to close?" : null;
})
สำหรับ jQuery เวอร์ชั่นที่เก่ากว่า 1.7 ลองสิ่งนี้:
var inFormOrLink;
$('a').live('click', function() { inFormOrLink = true; });
$('form').bind('submit', function() { inFormOrLink = true; });
$(window).bind("beforeunload", function() {
return inFormOrLink ? "Do you really want to close?" : null;
})
live
วิธีการไม่ได้ทำงานร่วมกับsubmit
เหตุการณ์ดังนั้นหากคุณเพิ่มรูปแบบใหม่ที่คุณจะต้องผูกจัดการกับมันได้เป็นอย่างดี
โปรดทราบว่าหากตัวจัดการเหตุการณ์ที่แตกต่างกันยกเลิกการส่งหรือการนำทางคุณจะสูญเสียการแจ้งเตือนหากหน้าต่างปิดจริงในภายหลัง คุณสามารถแก้ไขได้โดยการบันทึกเวลาในsubmit
และclick
กิจกรรมและตรวจสอบว่าbeforeunload
เกิดขึ้นมากกว่าสองวินาทีในภายหลัง