onbeforeunload
उपयोग करने के लिए कहीं और जाएंगे रहा है बस की स्ट्रिंग वापस जाने के लिए पुष्टि करने के लिए सही तरीका है संदेश जो आप दिखाना चाहते हैं। MDN has this to say।
समारोह घटना वस्तु की returnValue संपत्ति के लिए एक स्ट्रिंग मान असाइन और एक ही स्ट्रिंग लौटाने यह बाध्यकारी रूप
तो व्यवहार आप के लिए सिर्फ होगा पूछने के लिए अपने onbeforeunload
समारोह (समान होना चाहिए jQuery के साथ, अन्य घटनाओं कर की तरह विशेष रूप से onbeforeunload के बाद से कई घटना श्रोताओं का समर्थन नहीं करता)
window.onbeforeunload = function() {
return "Are you sure?";
};
लेकिन विडंबना यह है कि, फायरफॉक्स सुरक्षा उद्देश्यों के लिए इस का समर्थन नहीं करता।
ध्यान दें कि फ़ायरफ़ॉक्स 4 और बाद में लौटाई गई स्ट्रिंग उपयोगकर्ता को प्रदर्शित नहीं होती है। bug 588292 देखें।
संपादित करें: मैंने बग रिपोर्ट को और पढ़ें। इस निर्णय के लिए वे साइट का मुख्य कारण यह है: "1. साइट द्वारा आपूर्ति किए गए टेक्स्ट को हटाएं, क्योंकि यह एक सुरक्षा समस्या है (ब्राउज़र संवाद में अविश्वसनीय पाठ)"। मुझे आश्चर्य है कि वे alert
के बारे में कैसा महसूस करते हैं?
अधिकांश आधुनिक ब्राउज़र (क्रोम, आईई 9 + या इससे पहले, और ओपेरा, मुझे निश्चित रूप से पता है) आप किसी भी प्रदर्शन को स्ट्रिंग करने के अलावा onbeforeunload
फ़ंक्शन में करने की कोशिश करने वाले किसी भी चीज़ को अनदेखा करेंगे। मैं जाहिरा तौर पर गलत था: यह उपयोगकर्ताओं को ब्राउज़र अपहरण पॉपअप खोलने, उपयोगकर्ता किसी अन्य, संभवतः दुर्भावनापूर्ण डोमेन इंगित करके नेविगेशन प्रयास अधिभावी, आदि
संपादित 2 को रोकने के लिए है। कुछonbeforeunload
में चीजों को अस्वीकार कर दिया गया है, वे मुख्य रूप से ईवेंट नमूना और पृष्ठ नेविगेशन के साथ आपके नमूना कोड में किए गए कार्यों के प्रकार होते हैं।एफएफ बग रिपोर्ट के deep in the comments से, उपयोगकर्ता ओसासुमी एफएफ 4+ उपयोगकर्ताओं को कस्टम टेक्स्ट प्रदर्शित करने के लिए आसपास के काम के साथ इस जेएसफ़िल्ड के लिए एक लिंक पोस्ट करता है: http://jsfiddle.net/ecmanaut/hQ3AQ/ तो स्पष्ट रूप से alert()
पर कॉल करने की अनुमति है, यहां तक कि onbeforeunload
में भी, जो उल्लसित रूप से ठीक से कर रहा है 'बग' "फिक्स" के लिए मूल कारण था: ब्राउज़र/एप्लिकेशन/ओएस/आधिकारिक दिखने वाले संवाद में कस्टम टेक्स्ट प्रदर्शित करना।
स्रोत
2013-03-01 22:29:13
संभव नहीं है। उपयोगकर्ता इनपुट के बिना नेविगेशन को रोकने में सक्षम होने से ब्राउजिंग काम करने का तरीका टूट जाएगा। – jbabey
मुझे एक ही भावना है। उदाहरण के लिए फ़ायरफ़ॉक्स में वे जानबूझकर सुरक्षा कारणों से window.location.href ओवरराइडिंग ब्लॉक करते हैं। [बगजिला में यह बग] देखें (https://bugzilla.mozilla.org/show_bug.cgi?id=736694)। – kamituel
असल में यह संभव है। अन्यथा, यदि आप "छोड़ने और परिवर्तन खोना" चाहते हैं तो साइटें मौजूद नहीं होंगी। पहले से लोड होने की घटना मौजूद है और यदि आप बिना सर्फिंग के विंडो को बंद करते हैं तो यह कैच हो जाता है। JQuery कॉलिंग में – Alfabravo