2010-08-13 9 views
7

मेरे पास एक ऐसी साइट है जो बहुत सारी जावास्क्रिप्ट (मुख्य रूप से jQuery) का उपयोग करती है और मुझे उपयोगकर्ता को यह जानने के लिए एक अच्छा वैश्विक तरीका चाहिए कि जब वे दूर से नेविगेट करते हैं तो वे सहेजे गए परिवर्तन खो देंगे एक विशेष पृष्ठउपयोगकर्ता को चेतावनी देने के लिए सर्वोत्तम अभ्यास वे

इस समय मेरे पास इनपुट पर एक अपरिवर्तनीय घटना है और मेरे मुख्य नेविगेशन को एक फ़ंक्शन में लपेटें जो क्लिक करते समय चेतावनी प्रदर्शित करेगा।

यह वास्तव में भद्दा लगता है और अच्छी तरह से स्केल नहीं करता

+0

चीयर्स:

तो मैं बिना सहेजे गए परिवर्तन के बारे में उपयोगकर्ता को सचेत करने के onbeforeunload घटना का उपयोग करें! – Toby

+0

यह ठीक है। जब मैं खोने की बजाय ढीले लिखने की बात आती हूं तो मैं थोड़ा ओसीडी हूं। – GenericTypeTea

उत्तर

5

मेरे पास मेरे इनपुट पर onchange ईवेंट है और वे बदलते समय isDirty वैरिएबल को सही पर सेट करते हैं। वर्तनी जाँच GenericTypeTea के लिए

var isDirty = false; 

window.onbeforeunload = function (evt) { 
    if (isDirty) { 
     return 'If you continue your changes will not be saved.'; 
    } 
} 
+0

ऐसा क्यों न करें कि ऐसा करने के लिए एक अलग कार्य करने के बजाय गंदे सच है या नहीं? – user353297

+0

@ mel33t - एर्म, मैं हूं। – GenericTypeTea

+0

आपने अपने उत्तरों को संपादित करना होगा क्योंकि मैं लाइन को पढ़ सकता हूं "अगर (checkIsDirty()) {" (या कुछ समान)। – user353297

5

आप देख रहे हैं onbeforeunload घटना के लिए (नेविगेशन जो मुख्य नेविगेशन का हिस्सा नहीं है मैन्युअल रूप से लिपटे होने के लिए है, जो आदर्श से दूर है की जरूरत है)।

तरह

$(window).bind('beforeunload', function(){ 
    return "Are you really sure?"; 
}); 

देशी: निश्चित रूप से सिर्फ "को रोकने विधि" है

window.onbeforeunload = function(){ 
    return "Are you really sure?"; 
}); 

है। यह जानने के लिए कि आपको अपनी साइट पर बदलाव आया है या नहीं, आपको अभी भी कुछ तर्क की आवश्यकता है। उदाहरण के लिए boolean का उपयोग कर आसानी से किया जा सकता है। इसके अलावा आप

if('onbeforeunload' in window){} 

मैं सभी प्रमुख ब्राउज़रों आजकल घटना का समर्थन लगता है जैसे एक त्वरित का पता लगाने बनाना चाहिए, लेकिन अभी भी ब्राउज़र जो कि घटना नहीं जानते हैं। तो यदि उपर्युक्त स्थिति विफल हो जाती है, तो आप अभी भी किसी अन्य तरीके से शानदार रूप से फ़ॉलबैक कर सकते हैं।

+1

+1। निश्चित रूप से, किसी प्रकार का झंडा है जिसे आप जांच सकते हैं और केवल पुष्टि किए गए हैं कि * हैं * सहेजे गए परिवर्तन जो खो जाएंगे। ध्यान दें कि एसओ स्वयं ही करता है (लिखना शुरू करें और जवाब दें और नेविगेट करने का प्रयास करें ...)। –

0

पृष्ठ को बदलने के लिए on unload विंडो ईवेंट पर उपयोग करने के लिए उपयोग करें। फिर किसी भी सहेजे गए डेटा को नेविगेट करने पर उपयोगकर्ता को चेतावनी देने के लिए एक लाइटबॉक्स अलर्ट संकेत दिया जाएगा।

संबंधित मुद्दे