क्या स्टैक ओवरफ़्लो से नीचे दिए गए एक की तरह विंडो के लिए कैप्चर करने का कोई तरीका है (प्रश्न पूछे बिना 'प्रश्न पूछें' पृष्ठ छोड़ते समय ऐसा होता है)?window.onbeforeunload पुष्टिकरण संवाद का परिणाम कैप्चरिंग
क्रोम में यह कैसा दिखाई देता है, मेरा मानना है कि यह अन्य ब्राउज़रों में थोड़ा अलग है, लेकिन आपके पास हमेशा कुछ हां/नहीं बटन हैं।
मुमकिन है अगर वे हमलावर पृष्ठ पर हों बाद घटना ट्रिगर की जा रही है कि वे रहने के लिए चुना है और आप शायद js के अनुक्रम को देख कर यह पता लगा सकता है। हालांकि मैं जानना चाहता हूं कि यह निर्धारित करने के लिए कि क्या उन्होंने "इस पृष्ठ को छोड़ दें" पर क्लिक किया है?
मैं नीचे की तरह इस क्रियान्वित किया है:
// concept taken from SO implementation
function setConfirmUnload(showMessage, message) {
window.onbeforeunload = showMessage ? (message ? message : "this is a default message") : null;
}
// pseudo code
listen to changes on inputs
if any inputs fire a change event
call setConfirmUnload(true, 'My warning message')
टिप्पणी मैं अपने साइट के भीतर jQuery उपयोग कर रहा हूँ।
मैं अनिवार्य रूप से एक जीमेल को कार्यान्वित करने की कोशिश कर रहा हूं जैसे ड्राफ्टिंग कार्यान्वयन, जिसमें यदि कोई उपयोगकर्ता किसी फॉर्म के साथ एक पृष्ठ छोड़ देता है तो उन्होंने बिना किसी सहेजने में बदलाव किए हैं, वे एक समान संवाद से गर्म हो जाते हैं। अगर वे त्यागना चुनते हैं तो वे परिवर्तन कर रहे हैं और पृष्ठ छोड़ते हैं, मुझे डेटाबेस से कुछ अस्थायी रिकॉर्ड साफ़ करने की आवश्यकता है (मैं एक AJAX कॉल सोच रहा हूं, या बस delete
ध्वज के साथ फ़ॉर्म सबमिट कर रहा हूं) फिर उन्हें अपने रास्ते पर भेजना ।
मेरा प्रश्न भी संबंधित है:
परीक्षण करने के लिए क्या उपयोगकर्ता क्लिक किया: मैं एक सफल समाधान नहीं मिला '' 'window.onfocus()' '' का उपयोग कर। जब उपयोगकर्ता STAY पर क्लिक करता है तो वह फ़ंक्शन ट्रिगर हो जाएगा, और पृष्ठ पर वापस आ जाएगा। हालांकि, ध्यान दें कि टैब, विंडो इत्यादि बदलते समय ऑनफोकस() भी ट्रिगर किया जाएगा। उपयोगकर्ता को कहां से आ रहा है/कैप्चर करने में सक्षम होने के लिए onbeforeunload() में एक वैश्विक चर सेट करें। यदि उपयोगकर्ता पृष्ठ छोड़ना चाहता है, तो आप '' 'window.onunload()' '' – GDmac
में कुछ अंतिम सामान कर सकते हैं। Window.onfocus चाल फ़ायरफ़ॉक्स और मेरे लिए क्रोम (केवल आईई) में काम नहीं करती है, लेकिन मैं पाया गया कि 'preunload' हैंडलर में setTimeout का उपयोग करना (यदि उपयोगकर्ता ने पृष्ठ पर रहने का विकल्प चुना है तो कुछ कोड चलाने के लिए) काम किया। आप यहां एक कामकाजी उदाहरण देख सकते हैं: https://jsfiddle.net/nathanbedford/uscobrm0/10/ –