2012-01-25 14 views
11

समीक्षा वापस के लिए पेज राज्य रक्षित मैं उस पृष्ठ गतिशील रूप से एक उपयोगकर्ता एक बटन धक्का के आधार पर सामग्री लोड करता है। लेकिन जब आप किसी अन्य पृष्ठ पर किसी लिंक का अनुसरण करते हैं, तो पृष्ठ पर वापस आने के लिए ब्राउज़र बैक बटन दबाएं, पृष्ठ पूरी तरह से रीसेट हो गया है, हालांकि कोई गतिशील सामग्री कभी लोड नहीं हुई थी।ब्राउज़र का उपयोग कर बटन

मैं कसम खाता हूं कि मैंने पहले अलग व्यवहार देखा है, लेकिन शायद मैं पागल हूं। ब्राउज़र को पृष्ठ की स्थिति को पुन: प्रस्तुत करने के बजाय, पृष्ठ की स्थिति को संरक्षित नहीं करना चाहिए?

संपादित करें: वैसे, मैं Play का उपयोग कर रहा हूं! ढांचे, अगर इस पर कोई असर पड़ता है।

उत्तर

18

ब्राउज़र पृष्ठ को लोड करता है जैसा कि पहले प्राप्त हुआ था। जावास्क्रिप्ट के माध्यम से किए गए किसी भी डोम संशोधन को संरक्षित नहीं किया जाएगा।

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

उदाहरण के लिए यदि आप उपयोगकर्ता की जानकारी गतिशील रूप से प्रदर्शित कर रहे हैं। हर बार जब आप एक प्रदर्शित करते हैं तो आप यूआरएल हैश को इस तरह से बदल देंगे: "#/user/john"। जब भी पृष्ठ लोड होता है तो आपको यह जांचने की आवश्यकता होती है कि हैश मौजूद है (window.location.hash), इसे पार्स करें, और उपयोगकर्ता की जानकारी लोड करें।

+2

आपको लगता है कि चाहते हैं कि, इस तरह के एक बुनियादी जरूरत के लिए, इसे दूसरे तरीके से एक सा काम करेगा। मुझे आश्चर्य है कि HTML5 के लिए हमारे पास स्टोर में कुछ अलग है ... – Indigenuity

+0

कुकीज़ एक और संभावना है। आप जावास्क्रिप्ट में सत्र कुकीज़ सेट कर सकते हैं। – rustyx

3

ब्राउज़र की कार्यक्षमता को कार्यान्वित करना कठिन है। जब आप jquery.history.js जैसे प्लगइन का उपयोग करते हैं तो यह आसान हो जाता है।

http://tkyk.github.com/jquery-history-plugin/

1

epignosisx और मैल्कम दोनों सही हैं। इसे "गहरी लिंकिंग" के रूप में भी जाना जाता है। हाल ही में Play एप्लिकेशन में इसका निपटारा करने के लिए हमने JQuery पता प्लगइन का उपयोग किया था।

http://www.asual.com/jquery/address/

0

एक तकनीक है कि मैं इस के लिए उपयोग करते हैं, JSON करने के लिए राज्य को क्रमानुसार हैश स्ट्रिंग में संग्रहीत, और फिर इसे वापस पढ़ा जब पेज वापस पर भेज रहा है के लिए है। यह आईई 10 +, फ़ायरफ़ॉक्स, क्रोम में परीक्षण किया गया है।

उदाहरण:

// On state change or at least before navigating away from the page, serialize and encode the state 
// data you want to retain into the hash string 

window.location.hash = encodeURIComponent(JSON.stringify(myData)); 

// If navigating away using Javascript, be sure to use window.location.href over window.location.replace 

window.location.href = '/another-page-url' 

.... 

// On page load (e.g. in an init function), if there is data in the #hash, overwrite initial state data 
// by decoding and parsing the JSON string 

if (window.location.hash) { 

    // Read the hash string omitting the # prefix 

    var hashJson = window.location.hash.substring(1); 

    // Restore the deserialized data to memory 

    myData = JSON.parse(decodeURIComponent(hashJson)); 
} 
संबंधित मुद्दे