2011-08-01 7 views
24

ऑनबेरनलोड और ऑनलोड के बीच अंतर क्या हैं? इसके अलावा मेरे पास आईपैड पर इसके उपयोग से संबंधित एक विशिष्ट प्रश्न है ... मेरे पास एक पृष्ठ है (myPage.html) जहां पेज बंद होने पर मुझे अलर्ट दिखाने की कोशिश कर रहा है (यानी एक्स को आईपैड पर टैब बंद करने के लिए दबाया जाता है)onbeforeunload और onunload के बीच अंतर

अब मैंने दोनों विंडो का उपयोग करने की कोशिश की .ऑनलोड और window.onbeforeunload नीचे आईपैड पर मेरे निष्कर्ष हैं;

  1. window.onunload का उपयोग करना, मैं एक चेतावनी प्राप्त करने में सक्षम हूँ जब उपयोगकर्ता (या तो कुछ लिंक पर क्लिक करने या Google खोज करते हुए mypage.html पर कार्य करके) mypage.html से एक भिन्न पृष्ठ पर जाने। हालांकि कुछ भी नहीं होता है जब टैब को न्यूनतम दृश्य (एक्स)

  2. विंडो का उपयोग करना .onbeforeunload का उपयोग करके, मुझे न तो एक चेतावनी मिलती है भले ही उपयोगकर्ता myPage.html से किसी भिन्न पृष्ठ पर नेविगेट करता है या यदि वह टैब बंद करता है (एक्स) न्यूनतम दृश्य से।

मैं जानना चाहता था कि इस मुद्दे को ठीक करने का कोई वैकल्पिक तरीका है या नहीं?

धन्यवाद।

उत्तर

12

onunload पृष्ठ बंद होने पर निर्देश निष्पादित करने के लिए ज़िम्मेदार है। यह आईई और AJAX के साथ समस्या का कारण बनता है।

onbeforeunload क्योंकि यह खिड़की के वास्तविक समापन के साथ प्रतिस्पर्धा में नहीं चलता है और इससे पहले कि onunload

शुरू हो रहा है मैं जानता हूँ कि ओपेरा onbeforeunload स्वीकार नहीं करने के लिए इस्तेमाल और अधिक कुशल है -, यकीन नहीं करता है, तो वे कहते हैं कि ठीक कर दी है लेकिन मैं हमेशा श्रोता रजिस्टर दोनों सुरक्षित होने के लिए:

window.onunload = window.onbeforeunload = (function(){... 
+4

Thx इसके लिए बहुत कुछ ... लेकिन आईपैड कार्यान्वयन के बारे में कोई विचार? – testndtv

+16

window.onunload = window.onbeforeunload = (function() {..., यदि दोनों घटनाओं के साथ ब्राउज़र में कोई समस्या नहीं है, तो फ़ंक्शन दो बार निष्पादित करेगा। – noboundaries

16

AlienWebguy के ans साथ जोड़ा जा रहा है, ब्राउज़र है कि दोनों घटनाओं का समर्थन पर दोहरी कॉल से बचने के लिए,

var onBeforeUnLoadEvent = false; 

window.onunload = window.onbeforeunload= function(){ 
if(!onBeforeUnLoadEvent){ 
    onBeforeUnLoadEvent = true; 
    //your code here 
    } 
}; 
5

onbeforeunload:

  • उतराई से पहले कहा जाता है शुरू होता है
  • MDN tells me आप एक गैर शून्य मूल्य (यानी एक मूल्य वापस लौट कर event.preventDefault();
  • का उपयोग कर पृष्ठ के समापन को रद्द करने या कर सकते हैं!= 0), पेज पॉप अप होगा एक पुष्टिकरण संवाद उपयोगकर्ता करीब
  • MDN रद्द करने के लिए चयन करने के लिए भी ओपेरा 12 कहते हैं और ऊपर समर्थन onbeforeunload की अनुमति देता है कि - लग रहा है इसके थोड़ी देर अब

के लिए यह समर्थित की तरह onunload:

  • उतराई के बाद कहा जाता है शुरू हो गया है, लेकिन किसी भी संसाधन आवंटन रद्द करने से पहले (अपने मेरे लिए स्पष्ट वास्तव में क्या इस अवधि के दौरान किया जाता है नहीं)
  • इसकी भी पेज इस पी पर बंद रद्द करने के लिए देर से oint

एकमात्र कारण मैं तुम क्यों onbeforeunload से अधिक onunload उपयोग करने के लिए किया जाएगा, जहां अपने onunload कोड कुछ महत्वपूर्ण समय लग सकता है, और है एक खिड़की है, जबकि बंद करने लटका हुआ है कि देखने के लिए उपयोगकर्ता नहीं चाहता चाहेंगे के बारे में सोच सकते हैं ।

7

onbeforeunload और onunload के बीच एक महत्वपूर्ण अंतर (रद्द करने योग्यता के अलावा) यह है कि पूर्व डाउनलोड लिंक के लिए ट्रिगर किया गया है और बाद वाला नहीं है। उदाहरण: <a href="https://somewhere.com/thething.zip">download</a>onbeforeunload हैंडलर ट्रिगर करेगा, लेकिन onunload नहीं होगा।

+4

मैं इसे क्रोम पर पुन: पेश नहीं कर सकता। क्या आपके पास इस पर कोई दस्तावेज है? –