मैं इस सवाल भर में ठोकर खाई है, जबकि अपने ही सवाल का जवाब है कि प्रकृति में समान था के लिए खोज। तो, मैं यहां एक कामकाज के साथ आया हूँ। मुझे केवल "onbeforeunload" कॉल करने की आवश्यकता होती है जब कोई उपयोगकर्ता किसी विशिष्ट बटन पर क्लिक करता है और अन्य में से कोई भी नहीं। उम्मीद है कि यह आपके प्रश्न पर कुछ प्रकाश डालता है।
मुझे इसे jsfiddle में काम करने के लिए मिला। आप उस डेमो में परीक्षण कर सकते हैं जिसे मैंने स्थापित किया है, और स्पष्ट रूप से देख सकता है कि यह केवल बटनों में से एक के साथ काम करता है। हालांकि, एक चेतावनी है, जिसके लिए मुझे एक फिक्स देखने के लिए परेशान नहीं किया गया है। यदि आप बटन पर क्लिक करते हैं और पृष्ठ पर बने रहने का चयन करते हैं, तो बाद के सभी बटन/लिंक/रीडायरेक्ट/रीलोड्स "ऑनबॉर्नलोड" ट्रिगर करेंगे, आपको "बग" के लिए अपने काम के साथ आने का स्वागत है (बेहतर की कमी के लिए शर्तें) इसे बनाने के लिए ताकि उपयोगकर्ता उस प्रतिक्रिया का कारण नहीं बन पाएगा यदि उपयोगकर्ता पृष्ठ पर रहने का फैसला करता है। हालांकि, यह काम कर रहा है और परीक्षण पर्यावरण में ऐसा करने के लिए आपने जो किया है वह करता है।
कोड यह रहा:
$(document).ready(function() {
$('.testButton').click(function() {
window.onbeforeunload = function() {
return "Enter your message here...";
}
});
});
संपादित करें:
तो, अन्य तरीकों से एक ही बात करने के लिए शोध करने के बाद, मैं एक और तरीका बटन के लिए ईवेंट को बांधने के लिए jQuery के .on का उपयोग कर सामने आने वाले() तरीका। कोड here देखा जा सकता है, सत्यापित करें कि पुराना कोड टिप्पणी की गई है। दोबारा, जैसा कि पहले "बग" है, लेकिन अभी भी कार्यक्षमता प्रदान करता है जिसे अनुरोध किया गया था।
$(document).ready(function() {
$('.testButton').on("click", function (event) {
window.onbeforeunload = function() {
return "Enter your message here...";
}
});
});
स्रोत
2013-01-29 21:44:57
दोनों फ़ायरफ़ॉक्स और IE8 पर मैं फोन पर एक त्रुटि window.onbeforeunload के लिए मिलता है:
यहाँ विकल्प है। फ़ायरफ़ॉक्स त्रुटि "window.onbeforeunload एक फ़ंक्शन नहीं है" और आईई वापस आती है "ऑब्जेक्ट इस संपत्ति या विधि का समर्थन नहीं करता है" – mutex
ठीक है, इसलिए समस्या यह है कि प्लगइन 'addEventListener'/'attachEvent' के माध्यम से एक ईवेंट हैंडलर को जोड़ता है और सीधे 'window.onbeforeunload' के माध्यम से नहीं। मुझे लगता है कि आपको 'preunload' फ़ंक्शन का संदर्भ प्राप्त करने के लिए प्लगइन कोड को संशोधित करना होगा। – casablanca
धन्यवाद!यह अब काम करता है। हालांकि हैंडलर के लिए ग्लोबल का उपयोग करने से बचने पर कोई सुझाव? – mutex