2012-02-28 18 views
10

मुझे पहली बार jQuery में पृष्ठ लोड होने की आवश्यकता है ताकि मैं केवल कुछ क्रियाएं कर सकूं जब पृष्ठ उस पृष्ठ पर पहली बार लोड हो जाता है जब उपयोगकर्ता उस पृष्ठ पर नेविगेट करता है। सर्वर साइड कोड पेज .ispostbasck के समान। मैंने $ (दस्तावेज़) का परीक्षण किया है। पहले से ही यह पेज लोड होने पर हर बार आग लगती है, इसलिए यह मुझे जो भी चाहिए उसे प्रदान नहीं करेगा। मैंने jQuery लोड फ़ंक्शन का भी प्रयास किया है - यह प्रत्येक पृष्ठ लोड को भी आग लगा देता है। तो पेज लोड द्वारा एक उदाहरण यह है कि मेरे पास टाइप बटन के पेज पर एक HTML इनपुट टैग है और यह एक पोस्टबैक (जैसे एएसपीनेट बटन) नहीं चलाता है लेकिन यह पृष्ठ को फिर से लोड करता है और $ (दस्तावेज़) को फायर करता है। पहले से हीjQuery के साथ पहले पृष्ठ लोड का पता लगाएं?

धन्यवाद

+2

उपयोग करने के लिए आप कुकीज़ दोस्त का उपयोग करना होगा है। –

उत्तर

6

एक घटना मौजूद नहीं है जो केवल तभी लोड होती है जब पृष्ठ पहली बार लोड हो जाता है।

आपको jQuery's .ready() event का उपयोग करना चाहिए, और फिर इस तथ्य को जारी रखें कि आपने अपनी पसंद की विधि (यानी कुकी, सत्र चर, स्थानीय भंडारण इत्यादि) का उपयोग करके पहली बार पृष्ठ लोड किया है।

नोट: यह विधि कभी भी मूर्ख प्रमाण नहीं होगी जब तक कि आप इस जानकारी को उपयोगकर्ता स्तर पर डीबी में संग्रहीत नहीं कर सकते। अन्यथा, जैसे ही उपयोगकर्ता अपनी कुकीज़ साफ़ करता है, या जो भी तरीका आप चुनते हैं, "पहली बार लोड" कोड फिर से आग लग जाएगा।

+4

उसने क्या कहा। Jquery (और सामान्य रूप से जावास्क्रिप्ट) पृष्ठ लोड के बीच कोई अंतर्निहित दृढ़ता नहीं है। –

16

आप पहली बार लोड जानकारी स्टोर करने के लिए कुकी का उपयोग करना होगा:

if (! $.cookie("cookieName")){ 
    // do your stuff 

    // set cookie now 
    $.cookie("cookieName", "firstSet", {"expires" : 7}) 
} 

नोट: ऊपर उदाहरण jQuery Cookie plugin उपयोग करता है।

6

मैं बस इस समस्या में भाग गया और इस तरह मैंने इसे संभाला। एक चर initialLoad का उपयोग करके पृष्ठ लोड पहली बार का ट्रैक रखें:

var initialLoad = true; 

$(document).ready(function() { 
    ... 
    ... 
    ... 

    initialLoad = false; 

}); 

फिर अन्य कार्यों में, आप यह कर सकते हैं:

if (initialLoad) { 
    //Do work that is done when the page was first refreshed/loaded. 
} else { 
    //Do work when it's not the initial load. 
} 

यह मेरे लिए अच्छी तरह से काम करता है। यदि उपयोगकर्ता पहले से ही पेज पर है और कुछ jQuery फ़ंक्शन चलाते हैं, तो अब मुझे पता है कि क्या उपयोगकर्ता ने पृष्ठ को लोड किया है या यदि वे पहले से ही पृष्ठ पर हैं।

+0

"मैंने $ (दस्तावेज़) का परीक्षण किया है। पहले से ही यह पेज लोड होने पर हर बार आग लगती है, इसलिए यह मुझे जो भी चाहिए उसे प्रदान नहीं करेगा।" - स्पष्ट रूप से वह नहीं पूछा कि उसने क्या पूछा – ghosh

-2

आसान समाधान 'एक बार' jQuery प्लगइन

$(element).once('class-name', function() { 
    // your javascript code 
}); 
संबंधित मुद्दे