दिलचस्प पोस्ट
मैं ctrl-c को C # कन्सोल ऐप में कैसा करूं? एंड्रॉइड .doc एक्सटेंशन फ़ाइल कैसे खोलें? एसडीसीडी तैयार करने के लिए एंड्रॉइड इंटेन्ट OnClick के बजाय View.OnTouchListener का उपयोग कैसे करें फ़ायरफ़ॉक्स में अतिरिक्त बटन रिक्ति / पैडिंग निकालें छलांग वर्ष खोजने के लिए जावास्क्रिप्ट htaccess बेसिक एथ से एक यूआरएल को बाहर निकालता है AngularJS: $ निरीक्षण और $ देखने के तरीके के बीच का अंतर मैक SQLite संपादक Android 4.4.2 में Google API (x86 सिस्टम छवि) और Google API (एआरएम सिस्टम छवि) के बीच का अंतर JVM के लिए अधिकतम स्मृति का उपयोग कैसे करें? आइट्यून्स कनेक्ट करने पर अपलोड करते समय "एप्लिकेशन को कोडिग सत्यापन" को कैसे हल किया जाए? मैं एक बोली स्क्रिप्ट में संख्या कैसे जोड़ सकता हूँ सीएफ़एलएजीएस सीपीपीएफएएलजीएस बनाम मेरी CSS3 मीडिया मोबाइल उपकरणों पर काम क्यों नहीं कर रही है?

जब परिवर्तन किए गए हैं, तो "क्या आप इस पृष्ठ से दूर नेविगेट करना चाहते हैं?" को कैसे दिखाया जाए?

यहां स्टैक ओवरफ्लो में, अगर आप परिवर्तन करना शुरू करते हैं तो आप पृष्ठ से दूर नेविगेट करने का प्रयास करते हैं, एक जावास्क्रिप्ट पुष्टि बटन दिखाता है और पूछता है: "क्या आप इस पृष्ठ से दूर नेविगेट करना चाहते हैं?" ब्लै ब्ला ब्लू …

क्या इससे पहले किसी को भी लागू किया गया है, मैं कैसे नज़र रखता हूं कि परिवर्तन किए गए थे? मेरा मानना ​​है कि मैं खुद कर सकता हूं, मैं विशेषज्ञों से आपके अच्छे अभ्यासों को जानने की कोशिश कर रहा हूं।

मैंने निम्नलिखित की कोशिश की लेकिन अभी भी काम नहीं करता है:

<html> <body> <p>Close the page to trigger the onunload event.</p> <script type="text/javascript"> var changes = false; window.onbeforeunload = function() { if (changes) { var message = "Are you sure you want to navigate away from this page?\n\nYou have started writing or editing a post.\n\nPress OK to continue or Cancel to stay on the current page."; if (confirm(message)) return true; else return false; } } </script> <input type='text' onchange='changes=true;'> </input> </body> </html> 

क्या कोई एक उदाहरण पोस्ट कर सकता है?

Solutions Collecting From Web of "जब परिवर्तन किए गए हैं, तो "क्या आप इस पृष्ठ से दूर नेविगेट करना चाहते हैं?" को कैसे दिखाया जाए?"

अपडेट (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 देता है)।

आप फ़ंक्शन संदर्भ में returnValue सेट करते हैं। returnValue भी पुराने ब्राउज़र में आपको एक स्ट्रिंग लौटने के बजाए ईवेंट का returnValue मूल्य सेट करना 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 नहीं कर सकते कि 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?"; }); 

onbeforeunload माइक्रोसॉफ्ट- ism निकटतम बात हमारे पास एक मानक समाधान है, लेकिन पता है कि ब्राउज़र समर्थन असमान है; उदा। ओपेरा के लिए यह केवल संस्करण 12 और बाद में (केवल इस लेखन के रूप में बीटा में) में काम करता है।

साथ ही, अधिकतम संगतता के लिए , आपको बस एक स्ट्रिंग लौटने की अपेक्षा करने की आवश्यकता है, जैसा कि मोज़िला डेवलपर नेटवर्क पर समझाया गया है।

उदाहरण: नेविगेशन प्रॉम्प्ट को सक्षम / अक्षम करने के लिए निम्न दो फ़ंक्शन परिभाषित करें (एमडीएन उदाहरण सीएफ):

 function enableBeforeUnload() { window.onbeforeunload = function (e) { return "Discard changes?"; }; } function disableBeforeUnload() { window.onbeforeunload = null; } 

फिर इस तरह एक फॉर्म को परिभाषित करें:

 <form method="POST" action="" onsubmit="disableBeforeUnload();"> <textarea name="text" onchange="enableBeforeUnload();" onkeyup="enableBeforeUnload();"> </textarea> <button type="submit">Save</button> </form> 

इस तरह, उपयोगकर्ता को केवल नेविगेट करने के बारे में चेतावनी दी जाएगी यदि वह टेक्स्ट क्षेत्र बदल चुका है, और वास्तव में फ़ॉर्म सबमिट करने पर उसे संकेत नहीं दिया जाएगा।

क्रोम और सफारी में यह काम करने के लिए, आपको इसे इस तरह करना होगा

 window.onbeforeunload = function(e) { return "Sure you want to leave?"; }; 

संदर्भ: https://developer.mozilla.org/en/DOM/window.onbeforeunload

JQuery के साथ यह सब करना बहुत आसान है चूंकि आप सेट में बाँध सकते हैं

इसके लिए पर्याप्त नहीं है, आप किसी ने सामग्री का संपादन करना शुरू कर दिया है, तो आप केवल नेविगेट को ट्रिगर करना चाहते हैं।

jquerys 'beforeunload' मेरे लिए बहुत अच्छा काम किया

 $(window).bind('beforeunload', function(){ if( $('input').val() !== '' ){ return "It looks like you have input you haven't submitted." } }); 

यह संदेश प्रस्तुत करने का एक आसान तरीका है यदि कोई डेटा फॉर्म में इनपुट है, और यदि फ़ॉर्म सबमिट किया गया है तो संदेश को न दिखाने के लिए:

 $(function () { $("input, textarea, select").on("input change", function() { window.onbeforeunload = window.onbeforeunload || function (e) { return "You have unsaved changes. Do you want to leave this page and lose your changes?"; }; }); $("form").on("submit", function() { window.onbeforeunload = null; }); }) 

नए लोगों के लिए जो एक सरल समाधान की तलाश कर रहे हैं, बस Areyousure.js का प्रयास करें

कीथ के पहले ही आश्चर्यजनक उत्तर पर विस्तार करने के लिए:

कस्टम चेतावनी संदेश

कस्टम चेतावनी संदेशों को अनुमति देने के लिए, आप इसे इस तरह एक फ़ंक्शन में लपेट कर सकते हैं:

 function preventNavigation(message) { var confirmOnPageExit = function (e) { // If we haven't been passed the event get the window.event e = e || window.event; // For IE6-8 and Firefox prior to version 4 if (e) { e.returnValue = message; } // For Chrome, Safari, IE8+ and Opera 12+ return message; }; window.onbeforeunload = confirmOnPageExit; } 

फिर उस कस्टम फ़ंक्शन को अपने कस्टम संदेश के साथ कहते हैं:

 preventNavigation("Baby, please don't go!!!"); 

नेविगेशन फिर से सक्षम करना

नेविगेशन फिर से सक्षम करने के लिए, आपको बस window.onbeforeunload सेट करना होगा। यहां यह एक साफ छोटे फ़ंक्शन में लिपटे है जिसे कहीं भी कहा जा सकता है:

 function enableNavigation() { window.onbeforeunload = null; } 

तत्वों का निर्माण करने के लिए इसे बाइंड करने के लिए jQuery का उपयोग करना

यदि jQuery का उपयोग कर रहे हैं, तो यह आसानी से इस तरह के किसी एक तत्व के सभी तत्वों तक सीमित हो सकता है:

 $("#yourForm :input").change(function() { preventNavigation("You have not saved the form. Any \ changes will be lost if you leave this page."); }); 

फिर फॉर्म को प्रस्तुत करने की अनुमति देने के लिए:

 $("#yourForm").on("submit", function(event) { enableNavigation(); }); 

गतिशील रूप से संशोधित रूपों:

preventNavigation() और enableNavigation() किसी अन्य फ़ंक्शंस के लिए बाध्य किया जा सकता है, जैसे कि गतिशील रूप से एक फॉर्म को संशोधित करना, या enableNavigation() अनुरोध भेजने वाले बटन पर क्लिक करना। मैंने इस प्रकार एक छिपी इनपुट तत्व जोड़कर ऐसा किया:

 <input id="dummy_input" type="hidden" /> 

फिर किसी भी समय मैं उपयोगकर्ता को नेविगेट करने से रोकना चाहता हूं, मैं यह सुनिश्चित करने के लिए उस इनपुट पर बदलाव को ट्रिगर करता हूं कि preventNavigation() को निष्पादित किया जाता है:

 function somethingThatModifiesAFormDynamically() { // Do something that modifies a form // ... $("#dummy_input").trigger("change"); // ... } 

यहां यह प्रयास करें कि यह 100% काम करता है

 <html> <body> <script> var warning = true; window.onbeforeunload = function() { if (warning) { return "You have made changes on this page that you have not yet confirmed. If you navigate away from this page you will lose your unsaved changes"; } } $('form').submit(function() { window.onbeforeunload = null; }); </script> </body> </html> 

जब उपयोगकर्ता फ़ॉर्म में परिवर्तन करना शुरू करता है, तो बूलियन ध्वज सेट किया जाएगा। यदि उपयोगकर्ता तब पृष्ठ से दूर नेविगेट करने का प्रयास करता है, तो आप उस ध्वज को विंडो में देख सकते हैं। यदि ध्वज सेट है, तो आप उसे स्ट्रिंग के रूप में लौटने के द्वारा संदेश दिखाते हैं। संदेश को स्ट्रिंग के रूप में लौटाना आपके संदेश वाला एक पुष्टिकरण संवाद पॉपअप करेगा।

यदि आप परिवर्तनों को करने के लिए एजाक्स का उपयोग कर रहे हैं, तो परिवर्तन के बाद झंडा झंडा निर्धारित कर सकते हैं (यानी एजेक्स सफलता की घटना में)।

आप textarea पर एक onchange घटना जोड़ सकते हैं (या किसी भी अन्य क्षेत्रों) जो जेएस में एक चर सेट जब उपयोगकर्ता पृष्ठ को बंद करने का प्रयास करता है (window.onunload) आप उस वेरिएबल के मूल्य की जांच करते हैं और उसके अनुसार चेतावनी दिखाते हैं।

इस धागे के सभी उत्तरों के आधार पर, मैं निम्नलिखित कोड लिखा था और यह मेरे लिए काम किया

यदि आपके पास केवल कुछ इनपुट / टेदरटेरा टैग हैं जिनके लिए एक अनलोडिंग ईवेंट की आवश्यकता है, तो आप एचटीएमएलएक्स डेटा-एट्रिब्यूट्स को data-onunload="true" रूप में निर्दिष्ट कर सकते हैं।

उदाहरण के लिए

 <input type="text" data-onunload="true" /> <textarea data-onunload="true"></textarea> 

और जावास्क्रिप्ट (jQuery) इस तरह दिख सकते हैं:

 $(document).ready(function(){ window.onbeforeunload = function(e) { var returnFlag = false; $('textarea, input').each(function(){ if($(this).attr('data-onunload') == 'true' && $(this).val() != '') returnFlag = true; }); if(returnFlag) return "Sure you want to leave?"; }; }); 

यहाँ मेरा HTML है

 <!DOCTYPE HMTL> <meta charset="UTF-8"> <html> <head> <title>Home</title> <script type="text/javascript" src="script.js"></script> </head> <body onload="myFunction()"> <h1 id="belong"> Welcome To My Home </h1> <p> <a id="replaceME" onclick="myFunction2(event)" href="https://www.ccis.edu">I am a student at Columbia College of Missouri.</a> </p> </body> 

और इसी तरह मैंने जावास्क्रिप्ट में कुछ इसी तरह किया

 var myGlobalNameHolder =""; function myFunction(){ var myString = prompt("Enter a name", "Name Goes Here"); myGlobalNameHolder = myString; if (myString != null) { document.getElementById("replaceME").innerHTML = "Hello " + myString + ". Welcome to my site"; document.getElementById("belong").innerHTML = "A place you belong"; } } // create a function to pass our event too function myFunction2(event) { // variable to make our event short and sweet var x=window.onbeforeunload; // logic to make the confirm and alert boxes if (confirm("Are you sure you want to leave my page?") == true) { x = alert("Thank you " + myGlobalNameHolder + " for visiting!"); } } 

यह आसानी से एक ChangeFlag को सेट करके, टेक्स्टएरेआ की ऑन- चेंज इवेंट पर किया जा सकता है। ChangeFlag मान के आधार पर पुष्टि संवाद बॉक्स दिखाने के लिए जावास्क्रिप्ट का उपयोग करें। फ़ॉर्म को छोड़ दें और अनुरोधित पृष्ठ पर नेविगेट करें अगर रिटर्न सही की पुष्टि करें , और करें-कुछ नहीं

शरीर टैग के लिए एक "ऑनऑनलोड" पैरामीटर है जिसे आप जावास्क्रिप्ट फ़ंक्शन को वहां से कॉल कर सकते हैं। यदि वह गलत देता है तो इसे नेविगेट करना रोकता है।

क्या आप उपयोग करना चाहते हैं, जावास्क्रिप्ट में ऑनल लोड इवेंट है

यहां एक उदाहरण है: http://www.w3schools.com/jsref/event_onunload.asp