2015-06-08 4 views
26

हाय मैं एक पृष्ठ छोड़ने के लिए अपने पॉप अप को कस्टमाइज़ करना चाहता हूं, क्या ऐसा करने का कोई आसान तरीका है?jQuery से पहले एक पृष्ठ छोड़ने के लिए कस्टम पॉप अप विंडो

मैं सरल jQuery का उपयोग कर रहा

$(document).ready(function() { 
    var myPopUp = $('#pop-up').css('display', 'block'); 
    $(window).bind('beforeunload', function(){ 
     return 'load my pop up here instead of the default browser message'; 
    }); 
}); 

पॉप अप के लिए अपने एचटीएमएल डिफ़ॉल्ट रूप से छुपा है जो

<div id="pop-up"> 
    <h2>Are you sure wanna leave</h2> 
    <a href="#">Leave</a> 
    <a href="#" class="close">Stay</a> 
</div> 

धन्यवाद

उत्तर

4

यह सवाल पूछा गया है और कई stackoverflow में जवाब इस one

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

<script type='text/javascript'> 
function goodbye(e) { 
    if(!e) e = window.event; 
    //e.cancelBubble is supported by IE - this will kill the bubbling process. 
    e.cancelBubble = true; 
    e.returnValue = 'You sure you want to leave?'; //This is displayed on the dialog 

    //e.stopPropagation works in Firefox. 
    if (e.stopPropagation) { 
     e.stopPropagation(); 
     e.preventDefault(); 
    } 
} 
window.onbeforeunload=goodbye; 

</script> 
+0

इवेंट सेट करना .returnValue मेरे लिए काम किया। बस एक स्ट्रिंग लौटने से क्रोम 60.0.3112.78 में दिखाने के लिए पुष्टिकरण संवाद ट्रिगर नहीं किया जा रहा था। – Daryl

28

लघु जवाब: तुम सिर्फ चेतावनी देने के लिए इससे पहले कि आप पृष्ठ को छोड़ना चाहते हैं, इस जवाब यह है कि उपयोगकर्ता हंटर बाईं कोशिश आप नहीं कर सकता।

लंबा उत्तर: बल्कि स्पष्ट "सुरक्षा" कारणों के लिए यह बहुत सीमित है कि जब आप किसी पृष्ठ से दूर नेविगेट करने की कोशिश करते हैं/किसी टैब को बंद करते हैं या किसी अन्य तरीके से साइट छोड़ देते हैं तो आप बहुत सीमित हैं। कारण यह है कि ब्राउज़र पूरी तरह से यह सुनिश्चित करना चाहते हैं कि आप उपयोगकर्ता को वास्तव में एक विंडो बंद करने से नहीं रोक सकते हैं कि वह बंद करना चाहता है। इसलिए beforeunload jQuery ईवेंट और onbeforeunload जावास्क्रिप्ट ईवेंट उन चीज़ों में बेहद सीमित है जो वे कर सकते हैं, और उनमें से एक चीज वे निश्चित रूप से नहीं कर सकते हैं पृष्ठ को बंद होने से रोकें - एक बहुत ही मानकीकृत और उबाऊ विधि ब्राउज़र (शायद) अनुमति देता है। कुछ ब्राउज़र आपको एक संदेश निर्दिष्ट करने की अनुमति देते हैं, जबकि अन्य (फ़ायरफ़ॉक्स समेत) आपको संदेश बदलने की अनुमति भी नहीं देता है (क्योंकि आप उपयोगकर्ता को अपने अज्ञात बेटे को अपना सकते हैं? ") ... AFAIK अधिकांश ब्राउज़र अनुमति देता है आप को के साथ एक मानक संदेश में बदलने के लिए अपनी स्ट्रिंग निर्दिष्ट करने की स्ट्रिंग निर्दिष्ट करने के लिए निर्दिष्ट नहीं किया जा सकता है। कुछ ब्राउज़रों (कोई प्रमुख डेस्कटॉप ब्राउज़र) भी पूरी तरह से घटना की कमी नहीं है।

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

बैक-बटन को तोड़ने वाली परेशान साइटों के बारे में सोचें, फिर कल्पना करें कि वे टैब को बंद करने की आपकी क्षमता को भी हटा सकते हैं!

मुझे पसंद नहीं है: एक छोटी अंश -

मैं कौन क्या थोड़ा झुंझलाहट जोड़ा जा सकता है यहां तक ​​कि रोकने का प्रयास कर समय की एक व्यापक राशि खर्च की है एक उपयोगकर्ता से this बल्कि मनोरंजक मंच सवाल पर ठोकर खाई onunload और onbeforeunload। मुझे नहीं लगता कि उन्हें को अपने फ़ायरफ़ॉक्स इंस्टॉलेशन पर निकाल दिया जाना चाहिए। मुझे नहीं लगता कि इन घटनाओं के उपयोगी अनुप्रयोग हैं, यहां तक ​​कि उदार "आपके पास सहेजे गए काम नहीं हैं!" पॉप अप।जब मैं अपने वेब ब्राउज़र को एक वेब पेज बंद करने के लिए कहता हूं, मैं नहीं चाहता कि कोई वेब पेज से ब्राउज़र को रोकने (या देरी) को हमेशा बंद कर दे।

और बस कुछ हद तक आधिकारिक जानकारी का एक छोटा सा जोड़ने के लिए:

mozilla.org: WindowEventHandlers.onbeforeunload:

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

अविश्वसनीय रूप से मैं, हालांकि मुझे यकीन है कि मैं उन्हें पहले देखा है ... अगर कोई, महसूस कर सकते हैं कर रहा हूँ सुरक्षा चिंताओं या पल में इन घटनाओं के विशिष्ट सीमाओं का वर्णन भी अर्द्ध सरकारी स्रोतों को खोजने नहीं कर पा रहे उन्हें जोड़ने और इस पैराग्राफ को हटाने के लिए स्वतंत्र!

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