2015-11-05 6 views
5

मेरे पास एक एकल पृष्ठ ऐप है जिसमें पृष्ठ कभी अनलोड नहीं होता है। मैं यूआरएल में # का उपयोग कर रहा हूं और हैशचेंज का पता लगाने के लिए जावास्क्रिप्ट का उपयोग कर रहा हूं और फिर जेएस और एजेक्स का उपयोग कर यूआई अपडेट कर रहा हूं ... और मैं नहीं चाहता हूं कि आगे और पीछे बटन सर्वर को अतिरिक्त अनुरोध करें।पृष्ठ को एक पृष्ठ में रीलोड करने से पीछे और आगे बटन को रोकना

वर्तमान में, पहली बार उपयोगकर्ता शुरू में साइट पर आता है एक सर्वर अनुरोध किया जाता है (जो ठीक है)

Processing by MyController#index as HTML 

मेरा लक्ष्य के लिए इस सर्वर अनुरोध केवल के दौरान कम से उन समय एक बार होता है साइट ... हर बार जब वे किसी अन्य लिंक पर क्लिक करते हैं, तो मैं नए सर्वर अनुरोध को रोकने के लिए यूआरएल में "#" का उपयोग करता हूं ... इसलिए मेरे सभी "ए" टैग इस तरह की तरह दिखते हैं

<a href="#page1/

मेरे पास जो मुद्दा है वह है कि क्लिक करना ई पीछे या आगे बटन से चलाता है मेरी जे एस hashchange श्रोता (जो मैं चाहता) ... लेकिन यह भी कहता है

Processing by MyController#index as HTML //I DO NOT WANT THIS TO HAPPEN 

यहाँ

1.) उपयोगकर्ता mydomain पर जाता कार्यक्षमता मैं वर्तमान में हो रही है .com

2.) "HTML के रूप में MyController # सूचकांक द्वारा प्रसंस्करण" शुरू की है और एक सर्वर अनुरोध किया जाता है (इस ठीक है)

3.) उपयोगकर्ता एक लिंक पर क्लिक करके अब यूआरएल mydomain.com पढ़ता/# पृष्ठ 1 और मैं जेएस के साथ दृश्य अद्यतन करता हूं (यह ठीक है)

4.) उपयोगकर्ता एक लिंक पर क्लिक करके अब यूआरएल mydomain.com/#page2 पढ़ता है और मैं (इस ठीक है)

5.) उपयोगकर्ता क्लिक करता है जे एस के साथ दृश्य को अपडेट वापस और अब यूआरएल mydomain पढ़ता .com/# पृष्ठ 1 और मैं जेएस (यह ठीक है)

6.) एक सर्वर अनुरोध स्वचालित रूप से पृष्ठ को फिर से लोड करने के लिए बनाया गया है ("MyController # अनुक्रमणिका द्वारा HTML के रूप में प्रसंस्करण" को फिर से कॉल किया जाता है) (THIS आईएस नहीं ठीक)

उपयोगकर्ता चरण बैक बटन पर क्लिक करते समय चरण 6 को कैसे रोकूं ?? मैं बस वा यूआरएल बदलने के लिए और मेरे लिए जेएस के माध्यम से मेरे यूआई को अपडेट करने के लिए और कोई सर्वर अनुरोध

इसके अलावा, यदि रेल कुछ भी मदद करता है तो मैं रेल पर रूबी का उपयोग कर रहा हूं।

+0

यह सुनिश्चित नहीं है कि यह संभव है। Upvoted। – VSO

+2

आप एचटीएमएल 5 इतिहास API का उपयोग करने का प्रयास कर सकते हैं http://diveinto.html5doctor.com/history.html – jcubic

+0

आपने स्पष्ट रूप से यह नहीं कहा कि आप चरण 6 तक कैसे पहुंचते हैं। क्या आप कह रहे हैं कि एक बार चरण 5 पर, आपका पृष्ठ स्वचालित रूप से चरणबद्ध हो जाता है 6? – ghybs

उत्तर

1

जो आप करने की कोशिश कर रहे हैं वह असंभव है। आप बैक/फॉरवर्ड/स्टॉप/रीफ्रेश आदि जैसे ब्राउज़र बटन के डिफ़ॉल्ट व्यवहार को ओवरराइड नहीं कर सकते हैं।

आप क्या कर सकते हैं अपने स्वयं के पीछे और आगे के बटन बनाएं (और उन्हें वास्तविक पृष्ठ पर ही रखें) - और अपने एजेक्स कॉल करने के लिए तदनुसार उनके ईवेंट हैंडलर को कोड करें।

+0

जो मैं करने की कोशिश कर रहा हूं वह चरण 6 को स्वचालित रूप से होने से रोकता है ... क्या यह वास्तव में नहीं है मुमकिन? –

+0

@YaseenAniss मेरे ज्ञान का सबसे अच्छा, हां। मैं इस धागे पर वापस जांच करूंगा, हालांकि, अगर मैं गलत हूं। –

0

अंत में मिला यह यह पता लगा। किसी कारण से, जब भी बैक या फ़ॉरवर्ड बटन क्लिक किया गया था, तो टर्बोलिंक्स पृष्ठ को फिर से लोड करने का कारण बना रहा था। मैंने ऐप से टर्बोलिंक्स मणि हटा दिया और अब यह सब ठीक काम कर रहा है।

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