दिलचस्प पोस्ट
MySQL त्रुटि 2014 के कारण अन्य अबाधित क्वेरी सक्रिय हैं, तो क्वेरी निष्पादित नहीं कर सकते मैं प्रोग्राम को कई लाइनों में लेआउट में एक-एक करके बटन कैसे जोड़ूं? AsyncTask से ProgressDialog को प्रबंधित करने का सर्वोत्तम तरीका नेविगेशन नियंत्रक स्टैक, सबव्यूज़ या मोडल कंट्रोलर का उपयोग किए बिना दृश्य नियंत्रकों के परिवर्तन का एनीमेट करें? निम्न अनचाहे काम कर रहे पेड़ फाइलों को चेकआउट द्वारा ओवरराइट किया जाएगा सी ++ स्टैंडर्ड लाइब्रेरी: सीओएटी, सीर, सीन और एंडल के लिए आवरण लिखने के लिए कैसे? पारदर्शी पृष्ठभूमि के साथ एक ओपनजीएल रेंडरिंग प्रसंग कैसे करें? एफएफएमपीएग का उपयोग नेट में? आप Xib फ़ाइलों से कस्टम UITableViewCells कैसे लोड करते हैं? पहले रिक्त स्थान के ऊपर सेल से मूल्य के साथ गैर-सटे रिक्त कोशिकाओं को भरें सी = पर शॉर्ट सर्किट | और = = असाइनमेंट ऑपरेटर्स क्या मुझे सामग्री-प्रकार की आवश्यकता है: फ़ाइल डाउनलोड करने के लिए आवेदन / ओक्टेट-स्ट्रीम? एक कमजोर संदर्भ और एक अनजान संदर्भ के बीच अंतर क्या है? एचटीएमएल फॉर्म में पट विधि का उपयोग करना java.util.Date बनाम जावा.sql.Date

ब्राउज़र या टैब समापन का पता लगाना

ब्राउज़र या ब्राउज़र टैब को बंद किया जा रहा है, लेकिन लिंक के कारण नहीं होने पर पता लगाने के लिए क्या कोई क्रॉस-ब्राउज़र जावास्क्रिप्ट / jQuery कोड है?

वेब के समाधान से एकत्रित समाधान "ब्राउज़र या टैब समापन का पता लगाना"

अगर मैं आपको सही तरीके से प्राप्त करता हूं, तो आप जानना चाहते हैं कि जब कोई टैब / विंडो प्रभावी रूप से बंद हो जाता है ठीक है, AFAIK Javascript का एकमात्र तरीका पता लगाने के लिए कि उस तरह की सामग्री onbeforeunloadonbeforeunload और onbeforeunloadonbeforeunload इवेंट्स

दुर्भाग्यवश (या सौभाग्य से?), जब आप किसी साइट पर एक link या अपने ब्राउज़र बैक बटन पर छोड़ देते हैं तो उन घटनाओं को निकाल दिया जाता है तो यह सबसे अच्छा जवाब है जो मैं दे सकता हूं, मुझे नहीं लगता कि आप मूल रूप से जावास्क्रिप्ट में एक शुद्ध close पता लगा सकते हैं। मुझे सही करें अगर मैं यहाँ गलत हूँ

फ़ायरफ़ॉक्स प्रलेखन से

कुछ कारणों से, वेबकिट-आधारित ब्राउज़र्स संवाद बॉक्स के लिए कल्पना का पालन नहीं करते हैं। एक लगभग पार से काम उदाहरण नीचे उदाहरण से करीब होगा

 window.addEventListener("beforeunload", function (e) { var confirmationMessage = "\o/"; (e || window.event).returnValue = confirmationMessage; //Gecko + IE return confirmationMessage; //Webkit, Safari, Chrome }); 

सभी ब्राउज़रों को संभालने के लिए यह उदाहरण

सरल समाधान

 window.onbeforeunload = function () { return "Do you really want to close?"; }; 
 <body onbeforeunload="ConfirmClose()" onunload="HandleOnClose()"> var myclose = false; function ConfirmClose() { if (event.clientY < 0) { event.returnValue = 'You have closed the browser. Do you want to logout from your application?'; setTimeout('myclose=false',10); myclose=true; } } function HandleOnClose() { if (myclose==true) { //the url of your logout page which invalidate session on logout location.replace('/contextpath/j_spring_security_logout') ; } } 

// यह IE7 में काम कर रहा है, यदि आप टैब या ब्राउज़र को केवल एक टैब के साथ बंद कर रहे हैं

क्षमा करें, मैं मौजूदा उत्तर में से किसी एक टिप्पणी को जोड़ने में सक्षम नहीं था, लेकिन अगर आप एक तरह से चेतावनी संवाद लागू करना चाहते हैं, तो मैं यह बताना चाहता हूं कि किसी भी ईवेंट हैंडलर फ़ंक्शन में एक तर्क है – ईवेंट। आपके मामले में आप event.preventDefault () को फोन को स्वचालित रूप से छोड़ने से इनकार कर सकते हैं, फिर अपना स्वयं का संवाद जारी करें। मैं इसे मानक बदसूरत और असुरक्षित चेतावनी () का उपयोग करने से बेहतर तरीका मानता हूं। मैंने व्यक्तिगत रूप से केंडोवांडो ऑब्जेक्ट (टेलरिक के केंडो यूआई, जो केंडो ग्रिड और केंडोएडिटर को छोड़कर पूरी तरह से खुला है) पर आधारित डायलॉग बॉक्स के अपने सेट को लागू किया है। आप jQuery UI से संवाद बॉक्स का भी उपयोग कर सकते हैं। यद्यपि कृपया ध्यान दें, ऐसी चीजें अतुल्यकालिक हैं, और आपको प्रत्येक बटन पर क्लिक करने के लिए एक हेन्डलर को बाँधने की आवश्यकता होगी, लेकिन यह लागू करने के लिए सभी काफी आसान है।

हालांकि, मैं मानता हूं कि वास्तविक करीबी घटना की कमी भयानक है: यदि आप, उदाहरण के लिए, असली सत्र के मामले में केवल बैक-एंड पर अपना सत्र अवस्था रीसेट करना चाहते हैं, तो यह एक समस्या है।

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

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

  window.addEventListener("beforeunload", function (e) { $.ajax({ type: "POST", url: startTimerUrl, async: false }); return; }); 

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

कार्यान्वयन नोट: मैं asp.net MVC 5 का उपयोग कर रहा हूँ और मैं ओवरराइड Controller.OnActionExecuted() में लॉगआउट को रद्द कर रहा हूं .ऑनएक्शनएक्साइड Controller.OnActionExecuted() विधि

 $(window).unload( function () { alert("Bye now!"); } ); 

कोई घटना नहीं है, लेकिन एक संपत्ति window.closed जो सभी प्रमुख ब्राउज़रों में इस लेखन के समय के रूप में समर्थित है। इस प्रकार यदि आपको वास्तव में पता होना आवश्यक है कि आप उस संपत्ति की जांच करने के लिए खिड़की का चुनाव कर सकते हैं

if(myWindow.closed){do things}

नोट: आम तौर पर मतदान के लिए सबसे अच्छा समाधान नहीं है window.onbeforeunload । यदि संभव हो तो इस्तेमाल होने वाली घटना का इस्तेमाल किया जाना चाहिए, केवल एक चेतावनी है कि अगर आप नेविगेट करते हैं तो यह भी आग लग जाती है।

 window.onbeforeunload = function() { console.log('event'); return false; //here also can be string, that will be shown to the user } 

यह प्रयास करें, मुझे यकीन है कि यह आपके लिए काम करेगा।

 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type='text/javascript'> $(function() { try{ opera.setOverrideHistoryNavigationMode('compatible'); history.navigationMode = 'compatible'; }catch(e){} function ReturnMessage() { return "wait"; } function UnBindWindow() { $(window).unbind('beforeunload', ReturnMessage); } $(window).bind('beforeunload',ReturnMessage ); }); </script> 
 window.onbeforeunload = function () { if (isProcess > 0) { return true; } else { //do something } }; 

यदि आप ब्राउज़र में किसी भी प्रक्रिया के दौरान खिड़की या ताज़ा पेज को बंद करते हैं, तो यह फ़ंक्शन एक पुष्टि संवाद बॉक्स दिखाता है.इस ब्राउज़र में यह फ़ंक्शन काम करता है.आप को अपने एजेक्स प्रक्रिया में प्रोसेस वेर सेट करना पड़ता है।

 window.addEventListener("beforeunload", function (e) { var confirmationMessage = "tab close"; (e || window.event).returnValue = confirmationMessage; //Gecko + IE sendkeylog(confirmationMessage); return confirmationMessage; //Webkit, Safari, Chrome etc. }); 

इसे इस्तेमाल करे। यह काम करेगा। jquery अनलोड विधि का बहिष्कृत किया गया है

 window.onbeforeunload = function(event) { event.returnValue = "Write something clever here.."; }; 
 <script type="text/javascript" language="Javascript"> function DetectBrowserExit() { alert('Execute task which do you want before exit'); } window.onbeforeunload = function(){ DetectBrowserExit(); } </script> 

मैंने निम्नलिखित वेब ब्राउज़र में इस स्क्रिप्ट का परीक्षण किया है: फिलहाल, ओपेरा वेब ब्राउज़र onBeforeUnload ईवेंट का समर्थन नहीं करता है इंटरनेट एक्सप्लोरर मोज़िला फ़ायरफ़ॉक्स गूगल क्रोम सफारी