อัปเดต (2017)
ขณะนี้เบราว์เซอร์สมัยใหม่พิจารณาแสดงข้อความที่กำหนดเองว่าเป็นอันตรายด้านความปลอดภัยและดังนั้นจึงถูกลบออกจากพวกเขาทั้งหมด ขณะนี้เบราว์เซอร์แสดงข้อความทั่วไปเท่านั้น เนื่องจากเราไม่ต้องกังวลเกี่ยวกับการตั้งค่าข้อความอีกต่อไปจึงเป็นเรื่องง่ายเหมือน:
// Enable navigation prompt
window.onbeforeunload = function() {
return true;
};
// Remove navigation prompt
window.onbeforeunload = null;
อ่านด้านล่างเพื่อรับการสนับสนุนเบราว์เซอร์รุ่นเก่า
อัปเดต (2013)
คำตอบเดิมนั้นเหมาะสำหรับ IE6-8 และ FX1-3.5 (ซึ่งเป็นสิ่งที่เรากำหนดเป้าหมายไว้ในปี 2552 เมื่อมีการเขียน) แต่ค่อนข้างล้าสมัยในขณะนี้และจะไม่ทำงานในเบราว์เซอร์ปัจจุบันส่วนใหญ่ - ฉันออกไปแล้ว มันด้านล่างสำหรับการอ้างอิง
window.onbeforeunload
ไม่ได้รับการรักษาอย่างต่อเนื่องโดยเบราว์เซอร์ ควรเป็นการอ้างอิงฟังก์ชันและไม่ใช่สตริง (ตามคำตอบดั้งเดิมที่ระบุไว้) แต่จะทำงานในเบราว์เซอร์รุ่นเก่าเนื่องจากการตรวจสอบส่วนใหญ่ดูเหมือนจะเป็นสิ่งที่กำหนดให้หรือไม่onbeforeunload
(รวมถึงฟังก์ชันที่ส่งคืนnull
)
คุณตั้งค่าwindow.onbeforeunload
การอ้างอิงฟังก์ชัน แต่ในเบราว์เซอร์รุ่นเก่าคุณต้องตั้งค่าreturnValue
เหตุการณ์แทนการส่งคืนสตริง:
var confirmOnPageExit = function (e)
{
// If we haven't been passed the event get the window.event
e = e || window.event;
var message = 'Any text will block the navigation and display a prompt';
// For IE6-8 and Firefox prior to version 4
if (e)
{
e.returnValue = message;
}
// For Chrome, Safari, IE8+ and Opera 12+
return message;
};
คุณไม่สามารถconfirmOnPageExit
ทำการตรวจสอบและส่งคืน null ได้หากคุณต้องการให้ผู้ใช้ดำเนินการต่อโดยไม่มีข้อความ คุณยังต้องลบกิจกรรมเพื่อเปิดและปิดได้อย่างน่าเชื่อถือ:
// Turn it on - assign the function that returns the string
window.onbeforeunload = confirmOnPageExit;
// Turn it off - remove the function entirely
window.onbeforeunload = null;
คำตอบเดิม (ทำงานในปี 2009)
วิธีเปิดใช้งาน:
window.onbeforeunload = "Are you sure you want to leave?";
วิธีปิดใช้งาน:
window.onbeforeunload = null;
โปรดจำไว้ว่านี่ไม่ใช่เหตุการณ์ปกติ - คุณไม่สามารถผูกมันด้วยวิธีมาตรฐาน
เพื่อตรวจสอบค่า? ขึ้นอยู่กับกรอบการตรวจสอบของคุณ
ใน jQuery นี่อาจเป็นสิ่งที่ชอบ (ตัวอย่างพื้นฐานมาก):
$('input').change(function() {
if( $(this).val() != "" )
window.onbeforeunload = "Are you sure you want to leave?";
});