दिलचस्प पोस्ट
पायथन के दुभाषिया के आउटपुट को कैप्चर कैसे करें और टेक्स्ट विजेट में दिखाएं? पूर्ण स्क्रीन जावा में जेफ्रेम स्पार्क मिल्ब अजीब संख्या या NaN की भविष्यवाणी करता है अपर्याप्त पुल अनुरोधों को मेरे कांटा में अन्य फोकों से कैसे लागू करें? $ (दस्तावेज़) तारों से नामों के साथ चर बनाएँ रिवर्स नेटिव में लिस्ट्यूव ग्रिड ऐप आइकन प्रदर्शित करें यदि संपर्क फोन एड्रेस बुक में एप्लिकेशन के साथ जुड़ा हुआ है स्थिर आकार कतार जो स्वचालित रूप से नए एनक्यूस पर पुराने मूल्यों को ढांकता है हनीकॉब एंड्रॉइड 3.0 में एक्शन बार की मेनू आइटम के लिए आइकन प्रदर्शित करना एएसपी.नेट एमवीसी 3 रेज़र प्रदर्शन जावा में एसएमएस कैसे भेजें दृश्य क्षेत्र का टैग? PHP में प्रगति बार अपलोड करें कैसे heredoc विस्तार चर से बचने के लिए?

खिड़की.क्योंकि काम नहीं कर रहा है

मेरे पास एक फॉर्म है जहां इनपुट फ़ील्ड चेंज पर सहेजे गए हैं फ़ायरफ़ॉक्स (5) में यह तब भी काम करता है जब विंडो बंद हो जाती है, लेकिन क्रोम और आईई के लिए यह नहीं है और मुझे यह सुनिश्चित करने की ज़रूरत है कि मैं इस डेटा को सहेज रहा हूं भले ही वे विंडो में बंद करने की कोशिश करते हैं एक क्षेत्र लेकिन एक onBlur घटना नहीं हुई है (यानी उन्होंने एक पाठ बॉक्स में कुछ टाइप किया है, लेकिन इसके बाहर टैब नहीं किया है)।

मैंने खिड़की का इस्तेमाल करने के बारे में निम्नलिखित कुछ लेख पढ़े हैं। उदाहरण के लिए: लेख 1 आलेख 2

अगर मैं निम्नलिखित का उपयोग करता हूं:

window.onbeforeunload = function() { return "onbeforeunload"; } 

तो मुझे "ऑनबेयरिन लोड" में पॉपअप मिलता है

लेकिन अगर मैं कोशिश करता हूं:

 window.onbeforeunload = function() { alert("onbeforeunload"); } 

तो किसी भी ब्राउज़र में कुछ भी नहीं होता है, यहां तक ​​कि फ़ायरफ़ॉक्स भी।

मैं क्या हासिल करना चाहता हूं:

 window.onbeforeunload = function() { saveFormData(); } 

अगर कोई मुझे बता सकता है कि मैं गलत कहां जा रहा हूं, तो मैं आभारी रहूंगा।

बहुत धन्यवाद

Solutions Collecting From Web of "खिड़की.क्योंकि काम नहीं कर रहा है"

आपको onbeforeunload से onbeforeunload :

 window.onbeforeunload = function() { saveFormData(); return null; } function saveFormData() { console.log('saved'); } 

अद्यतन करें

टिप्पणियों के अनुसार, चेतावनी नए संस्करणों पर अब और काम नहीं कर रहा है, और कुछ और जाता है 🙂

एमडीएन से

25 मई 2011 से, एचटीएमएल 5 विनिर्देश बताता है कि इस घटना के दौरान window.showModalDialog() , window.alert() , window.confirm() , और window.prompt() विधियों को अनदेखा किया जा सकता है।

यह addEventListener इंटरफ़ेस के माध्यम से इसका उपयोग करने के लिए भी सुझाव दिया गया है:

आप इस घटना को window.addEventListener() और beforeunload ईवेंट के माध्यम से और प्रबंधित कर सकते हैं

अद्यतन कोड अब इस तरह दिखाई देगा:

 window.addEventListener("beforeunload", function (e) { saveFormData(); (e || window.event).returnValue = null; return null; }); 

इस घटना का उपयोग कैसे करें (यहां तक ​​कि इस पृष्ठ पर ऊपर दिए गए उत्तरों में भी) के बारे में बहुत गलत सूचना हो रही है

एक विशिष्ट उद्देश्य के लिए ब्राउज़र द्वारा onbeforeunload इवेंट एपीआई प्रदान किया जाता है: केवल एक चीज तुम कर सकते हो इस पद्धति में ऐसा करने योग्य है कि वह स्ट्रिंग वापस लौटना है जो ब्राउजर तब उपयोगकर्ता को संकेत देगा कि पृष्ठ से दूर नेविगेट करने से पहले उन्हें कार्रवाई की जानी चाहिए। आप उन्हें किसी पृष्ठ से दूर नेविगेट करने से नहीं रोक सकते (कल्पना करें कि अंतिम उपयोगकर्ता के लिए जो दुःस्वप्न होगा)।

क्योंकि ब्राउज़र उपयोगकर्ता को आपके ईवेंट श्रोता से लौटा देने वाली स्ट्रिंग दिखाने के लिए एक पुष्टिकरण संकेत का उपयोग करते हैं, इसलिए आप इस विधि में और कुछ भी नहीं कर सकते (जैसे कि एजेक्स अनुरोध करना)

मैंने लिखा एक आवेदन में, मैं उपयोगकर्ता को यह बताने के लिए कहूंगा कि पृष्ठ छोड़ने से पहले वे बिना सहेजे हुए बदलावों को जानते हैं। ब्राउज़र उन्हें संदेश के साथ संकेत देता है और उसके बाद, यह मेरे हाथों से बाहर है, उपयोगकर्ता रहने या छोड़ने का विकल्प चुन सकता है, लेकिन उस समय आपके पास आवेदन पर नियंत्रण नहीं है।

मैं इसका उपयोग कैसे करता हूं (छद्म कोड) का एक उदाहरण:

 onbeforeunload = function() { if(Application.hasUnsavedChanges()) { return 'You have unsaved changes. Please save them before leaving this page'; } }; 

यदि (और केवल तभी) यदि एप्लिकेशन में सहेजे नहीं गए बदलाव हैं, तो ब्राउज़र उपयोगकर्ता को मेरे संदेश को अनदेखा करने के लिए कहता है (और फिर भी पृष्ठ छोड़) या पृष्ठ को न छोड़े। यदि वे पृष्ठ को वैसे भी छोड़ना चुनते हैं, तो बहुत बुरा है, इसके बारे में कुछ भी नहीं है (और न ही करने में सक्षम होना चाहिए)।

आप सिर्फ चेतावनी () नहीं कर सकते हैं onbeforeunload में, कुछ और काम करता है

उपयोगकर्ता को छोड़ने की पुष्टि करने के लिए पृष्ठ छोड़ने पर एक संदेश पॉप करने के लिए, आप बस करते हैं:

 <script> window.onbeforeunload = function(e) { return 'Are you sure you want to leave this page? You will lose any unsaved data.'; }; </script> 

फ़ंक्शन को कॉल करने के लिए:

 <script> window.onbeforeunload = function(e) { callSomeFunction(); return null; }; </script> 

हां, सब लोग ऊपर बताते हैं

अपनी तात्कालिक स्थिति के लिए, ऑन चेंज की बजाय, आप इनपुट पर उपयोग कर सकते हैं, नया html5 में। इनपुट इवेंट एक समान है, लेकिन फोकस की परवाह किए बिना प्रत्येक कीस्ट्रोक पर यह आग लगाएगा। इसके अलावा चयन पर और बाकी सभी को चार्ज पर ही काम करता है।