अपडेट (2017)
आधुनिक ब्राउज़र अब एक कस्टम संदेश को सुरक्षा खतरे के रूप में प्रदर्शित करने पर विचार करते हैं और इसलिए इसे उन सभी से हटा दिया गया है । ब्राउज़र अब केवल सामान्य संदेश प्रदर्शित करते हैं। चूँकि हमें अब संदेश सेट करने की चिंता नहीं करनी है, यह उतना ही सरल है:
// Enable navigation prompt
window.onbeforeunload = function() {
return true;
};
// Remove navigation prompt
window.onbeforeunload = null;
विरासत ब्राउज़र समर्थन के लिए नीचे पढ़ें।
अपडेट (2013)
मूल उत्तर IE6-8 और FX1-3.5 के लिए उपयुक्त है (जो कि हम 2009 में जब इसे लिखा गया था तब हम लक्ष्य कर रहे थे), लेकिन अब तारीख से बाहर है और अधिकांश वर्तमान ब्राउज़रों में काम नहीं करेगा - मैंने छोड़ दिया है संदर्भ के लिए नीचे।
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
यदि आप उपयोगकर्ता को संदेश के बिना जारी रखना चाहते हैं, तो आप ऐसा नहीं कर सकते हैं कि चेक करें और वापस लौटें। आपको अभी भी ईवेंट को विश्वसनीय रूप से चालू और बंद करने के लिए निकालने की आवश्यकता है:
// 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?";
});