2010-09-02 23 views
14

मेरे पास एक वेबपृष्ठ है जो इंटरफ़ेस बनाने के लिए $(document).ready() का उपयोग करता है। फिर उपयोगकर्ता एक बच्चे के पृष्ठ पर जा सकता है, और मूल पृष्ठ पर वापस जाने के लिए वह उस पृष्ठ में ब्राउज़र के "पिछले" बटन या "रिटर्न" बटन दबा सकता है जो history.back(); को ट्रिगर करता है। मूल पृष्ठ पर वापस, $(document).ready() ट्रिगर नहीं किया गया है, इसलिए पृष्ठ में सूचनाएं अनुपलब्ध हैं।

क्या यह स्वचालित रूप से ट्रिगर करने का एक तरीका है जैसे कि यह "वास्तविक भार" था?

धन्यवाद!

संपादित

उस में एक चेतावनी रखने, चेतावनी poped है, लेकिन सामान अगर तैयार घटना का कुछ हिस्सा याद आ रही है की तरह मेरे इंटरफ़ेस में याद आ रही है। जांच ... document.ready में

संपादित 2

hahahahaha मैं कुछ चेकबॉक्स जो अनियंत्रित होने की अपेक्षा की जाती है click। जब मैं इस पृष्ठ पर "बैक" करता हूं, तो वे चेक किए जाते हैं ताकि वे अनचेक हो जाएं क्योंकि मैं click उन्हें पुनः प्राप्त करता हूं।

क्षमा करें, यह पूरी तरह से मेरा बुरा :(

+0

आप इसे किस ब्राउज़र में देख रहे हैं? मुझे याद है कि इस समस्या को बैक/फॉरवर्ड बटन के साथ ही समस्या है। –

+0

मैं क्रोम पर हूं। समस्या की सूचना देने वाले उपयोगकर्ता फ़ायरफ़ॉक्स पर है। – Sirber

+0

कृपया – Sirber

उत्तर

7

उपयोगकर्ता नेविगेट करने के लिए Back बटन का उपयोग करता है और आप पेज की एक पूरी पुनः लोड की आवश्यकता होती है, तो आप पेज के NO-CACHE नीति सेट कर सकते हैं।

है इस तरह ब्राउज़र को Back बटन का उपयोग कर सर्वर से पृष्ठ को फिर से लोड करने के लिए मजबूर होना पड़ता है।

+0

Hrmm..nice उत्तर। उस बारे में सोचा नहीं था। – Dutchie432

+0

मैं पहले से ही उपयोग करता हूं: हेडर ("कैश-कंट्रोल: प्राइवेट, नो-कैश, जरूरी-पुनरीक्षण"); हेडर ("प्रगमा: नो-कैश"); – Sirber

+0

मैंने '<मेटा http-equiv =" pragma "content =" no-cache ">' जोड़ा, लेकिन जब मैं "बैक" दबाता हूं तो यह पृष्ठ को फिर से लोड नहीं करता है। – Sirber

1

बहुत ही रोचक सवाल। पृष्ठ को फोकस होने पर आपको ईवेंट/फ़ंक्शन को फिर से ट्रिगर करने की आवश्यकता हो सकती है, या कुछ समान है। whethe ट्रैक करने के लिए एक ध्वज चर रखने की भी आवश्यकता हो सकती है आर 'इवेंट री-ट्रिगरिंग' क्रम में है।

4

1.) अपने पृष्ठ के नीचे स्क्रिप्ट डालें।
2.) अपने अंतिम स्क्रिप्ट टैग में प्लगइन और व्हाट्नॉट निष्पादित करें।
3.) डॉमरेडी कार्यान्वयन पर बिल्कुल उपयोग न करें, यह अनावश्यक है।

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

इसके अलावा, यह भी अच्छी प्रथा है क्योंकि आपकी स्क्रिप्ट HTML/css को प्रतिपादित नहीं करती हैं।

डॉमरेडी या ऑनलोड कार्यान्वयन के आधार पर नहीं बहुत सारे मुद्दों को हल करता है।

+1

-1, ऐसे ब्राउज़र के लिए जहां 'ऑनलोड' काम नहीं करता है, आपका समाधान भी काम नहीं करता है। जैसे फ़ायरफ़ॉक्स, यह स्क्रिप्ट को तब तक नहीं चलाता है जब तक आप इसे ऑनलोड में या पृष्ठ के निचले हिस्से में नहीं डालते। क्या आपने परीक्षण भी किया? – Pacerier

8

इस समस्या का त्वरित समाधान, इसके बजाय "onpageshow" का उपयोग करें।

window.onpageshow = function(event) { 
    //do something 
}; 
+0

धन्यवाद! अन्य प्रस्तावित समाधानों में से कोई भी फ़ायरफ़ॉक्स और क्रोम दोनों पर ठीक से काम नहीं करता है, लेकिन यह करता है। –

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