2011-02-26 11 views
6

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

मैं जिस समाधान पर पहुंचा हूं, वह पृष्ठ में इस जावास्क्रिप्ट को एम्बेड करके AJAX कॉलबैक बनाना है। IE और Firefox, अनलोड आग के लिए, अलर्ट में देखा जाता है, और मैं सभी मामलों मैं इच्छा

a) User closes browser 
    b) User types in a new URL in the address bar 
    c) User clicks on a link causing page to reload 

में मेरी सी # तरफ कॉलबैक देखें:

window.onunload = pageleave; 
    function pageleave() {     
        alert('test'); 
        PageMethods.CheckLogout('abc','xyz',OnSucceed,OnFail);     
     }  

यहाँ समस्या यह है क्रोम और सफारी के लिए, ए और बी ठीक काम करते हैं। हालांकि, जब उपयोगकर्ता किसी लिंक पर क्लिक करता है, जो मेरे एएसपीएक्स पेज को पुनः लोड करने का कारण बनता है, तो मेरा सी # साइड कोड नहीं लगाया जाता है। हालांकि जावास्क्रिप्ट चेतावनी निकाल दी गई है।

मैं यह देखने की कोशिश कर रहा हूं कि मैं क्रोम/सफारी को आईई/फ़ायरफ़ॉक्स की तरह व्यवहार करने के लिए कैसे प्राप्त कर सकता हूं। क्या यह भी एक संभावना है?

मदद के लिए अग्रिम धन्यवाद,

राजेश।

उत्तर

8

अनलोड ईवेंट की बजाय पहले से लोड ईवेंट का उपयोग करें।

इसके अलावा, एक सिंक्रोनस AJAX अनुरोध का उपयोग करें, एक अतुल्यकालिक नहीं, ताकि अनुरोध आपके पहले से लोड होने से पहले पूरा हो जाए।

मुझे यकीन नहीं है कि आप अपने जावास्क्रिप्ट ढांचे का उपयोग करके एक तुल्यकालिक AJAX अनुरोध कैसे करेंगे। jQuery में, यह इस तरह दिखेगा:

window.onbeforeunload = function() { 
    jQuery.ajax({ 
     url: '/page/to/load', 
     async: false 
    }); 
}; 
+3

मुझे लगता है कि केवल बाद का सुझाव - एक तुल्यकालिक AJAX अनुरोध का उपयोग करना आवश्यक है - आवश्यक है। 'Preunload' ईवेंट का उपयोग यह पुष्टि करने के लिए किया जाता है कि उपयोगकर्ता वास्तव में पृष्ठ छोड़ना चाहता है। –

+0

बहुत बहुत धन्यवाद दोस्तों। इसे अभी आज़माएं। – Rajesh

+0

+1 मेरे लिए यह समाधान क्रोम और फ़ायरफ़ॉक्स में काम करता है लेकिन IE9 नहीं (मुझे नहीं पता कि मुझे डर क्यों है)। इसके अलावा क्रोम के लिए यह केवल अनलोड ईवेंट में मेरे मामले में काम करता था –

1

मामले में किसी को भी भविष्य में इस भर आता है, मैं window.onbeforeunload उपयोग नहीं कर सका, क्योंकि यह बहुत जल्दी फायरिंग की गई थी। इसके बजाय, मुझे एक उपयुक्त कामकाज के रूप में window.onpagehide मिला।

उदा।

window.onpagehide = function() { 
    // some code here. 
}; 
संबंधित मुद्दे