2011-11-04 9 views
32

मैं पेज रीलोड ईवेंट कैप्चर कैसे कर सकता हूं?मैं jquery का उपयोग कर रीफ्रेश पृष्ठ का पता कैसे लगा सकता हूं?

मेरे पास एक मैसेजिंग सिस्टम है जो उपयोगकर्ता को पृष्ठ को रीफ्रेश करते समय अपने सभी इनपुट खो देता है। मैं फिर से पॉप्युलेट करने के लिए AJAX का उपयोग करना चाहता हूं, इसलिए यह पता लगाने की मेरी आवश्यकता है कि पृष्ठ को रीफ्रेश/रीलोड किया गया है।

+0

आप यहां एक समाधान ढूंढ सकते हैं: http://stackoverflow.com/questions/3699357/event-calling-before-page-unload – Dave

उत्तर

33
$('body').bind('beforeunload',function(){ 
    //do something 
}); 

लेकिन यह अभ्यस्त बाद के लिए किसी भी जानकारी को बचाने, जब तक आप बचत कहीं एक कुकी (या स्थानीय भंडारण) और unload घटना में हमेशा नहीं सभी ब्राउज़रों में आग है कि पर योजना बना रहे थे।


उदाहरण: http://jsfiddle.net/maniator/qpK7Y/

कोड:

$(window).bind('beforeunload',function(){ 

    //save info somewhere 

    return 'are you sure you want to leave?'; 

}); 
+11

रिकॉर्ड के लिए, इसे पृष्ठ पर भी बंद कर दिया जाएगा। – scumah

+0

आप इस विधि का उपयोग कर पृष्ठ से जानकारी भी सहेज सकते हैं। बस सभी इनपुट दायर मूल्य प्राप्त करें, एक डेटास्ट्रिंग करें और windows.location.href = "pagename? डेटास्ट्रिंग" को पहले से लोड करें फ़ंक्शन –

+2

में जोड़ें, क्या यह 'चालू 'और' अनलोड 'होना चाहिए? http://api.jquery.com/unload/ - क्या यह फ़ायरफ़ॉक्स में F5 का पता लगाता है? –

8

सभी कोड है क्लाइंट पक्ष, मुझे आशा है कि ठीक इस उपयोगी:

पहली बात 3 कार्यों देखते हैं हम का उपयोग करेगा :

function setCookie(c_name, value, exdays) { 
      var exdate = new Date(); 
      exdate.setDate(exdate.getDate() + exdays); 
      var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString()); 
      document.cookie = c_name + "=" + c_value; 
     } 

    function getCookie(c_name) { 
     var i, x, y, ARRcookies = document.cookie.split(";"); 
     for (i = 0; i < ARRcookies.length; i++) { 
      x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("=")); 
      y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1); 
      x = x.replace(/^\s+|\s+$/g, ""); 
      if (x == c_name) { 
       return unescape(y); 
      } 
     } 
    } 

    function DeleteCookie(name) { 
      document.cookie = name + '=; expires=Thu, 01-Jan-70 00:00:01 GMT;'; 
     } 

अब हम पेज लोड के साथ शुरू होगा:

$(window).load(function() { 
//if IsRefresh cookie exists 
var IsRefresh = getCookie("IsRefresh"); 
if (IsRefresh != null && IsRefresh != "") { 
    //cookie exists then you refreshed this page(F5, reload button or right click and reload) 
    //SOME CODE 
    DeleteCookie("IsRefresh"); 
} 
else { 
    //cookie doesnt exists then you landed on this page 
    //SOME CODE 
    setCookie("IsRefresh", "true", 1); 
} 
}) 
+0

जब मैंने कोशिश की तो यह हर बार पहली बार लोड लोड के लिए परीक्षण कोड निकाल दिया। –

11

यदि आप पृष्ठ ताज़ा

$(window).on('beforeunload', function(){ 
    // your logic here 
}); 

से पहले कुछ चर bookkeep अगर आप ओ कुछ शर्त पर कुछ सामग्री आधार लोड चाहते हैं

$(window).on('load', function(){ 
    // your logic here`enter code here` 
}); 
0

नीचे दिए गए अनुसार ग्राहक पक्ष पर दो घटनाएं हैं।

1. window.onbeforeunload (ब्राउज़र/टैब बंद & पृष्ठ लोड पर कॉल)

2. window.onload (पृष्ठ लोड पर कॉल)

सर्वर साइड पर

public JsonResult TestAjax(string IsRefresh) 
    { 
     JsonResult result = new JsonResult(); 
     return result = Json("Called", JsonRequestBehavior.AllowGet); 
    } 

क्लाइंट साइड पर

<script type="text/javascript"> 
 
    window.onbeforeunload = function (e) { 
 
     
 
     $.ajax({ 
 
      type: 'GET', 
 
      async: false, 
 
      url: '/Home/TestAjax', 
 
      data: { IsRefresh: 'Close' } 
 
     }); 
 
    }; 
 

 
    window.onload = function (e) { 
 

 
     $.ajax({ 
 
      type: 'GET', 
 
      async: false, 
 
      url: '/Home/TestAjax', 
 
      data: {IsRefresh:'Load'} 
 
     }); 
 
    }; 
 
</script>

ब्राउज़र/टैब बंद पर: उपयोगकर्ता ब्राउज़र/टैब बंद है, तो window.onbeforeunload सक्रिय होगा और सर्वर साइड पर IsRefresh मूल्य हो जाएगा "बंद करे"।

ताज़ा/पुनः लोड/F5 पर: तो उपयोगकर्ता पेज ताज़ा होगी, पहले window.onbeforeunload IsRefresh value = "बंद" और फिर window.onload IsRefresh मूल्य = "लोड" के साथ सक्रिय कर देगा के साथ है, तो सक्रिय कर देगा अब आप आखिरकार निर्धारित कर सकते हैं कि आपका पृष्ठ ताज़ा है।

संबंधित मुद्दे