2011-10-15 16 views
14

मैं अपने AJAX साइट के लिए History.js को कार्यान्वित करने की कोशिश कर रहा हूं ताकि मैं आगे और पीछे बटन और यहां तक ​​कि बुकमार्क का उपयोग कर सकूं। हालांकि उदाहरण @https://github.com/browserstate/History.js/ ने मुझे थोड़ा कार्यान्वित किया है कि इसे कैसे कार्यान्वित किया जाए। क्या इसका उपयोग करने के तरीके पर किसी के पास एक साधारण ट्यूटोरियल या उदाहरण है। एक उदाहरण हम उदाहरण के शुरू करने के लिए उपयोग कर सकते हैं एक नेविगेशन के रूप मेंHistory.js का कार्यान्वयन

<script type="text/javascript"> 
window.onload = function() 
{ 
function1(); 
}; 

<ul> 
<li><a href="javascript:function1()">Function1</a></li> 
<li><a href="javascript:function2('param', 'param')"</a></li> 
</ul> 
+0

यहां एक संभावित उत्तर और संबंधित प्रश्न देखें: http://stackoverflow.com/questions/13278822/is-this-a-proper-way-to-use-history-js – dansalmo

उत्तर

3

ऐसी कड़ी है इस प्रश्न का संदर्भ: RSH

How to implement RSH (Really Simple History) for Ajax History Back Button

से संबंधित Implementing "Back button" on jquery ajax calls

कुछ अधिक जानकारी

+0

ठीक है ट्यूटोरियल ने केवल एक प्रश्न में मदद की jquery में इसके बारे में $ ('#') है। लोड() एक AJAX अनुरोध के बराबर है जैसे onlick = 'जावास्क्रिप्ट: function1();' ? –

34

I History.js का उपयोग करने के तरीके को पूरी तरह से समझने में परेशानी थी। History.js के लिए एक संदर्भ वस्तु

History.js के लिए एक संदर्भ पाने के संदर्भ ऑब्जेक्ट के लिए कैपिटल

1. जाओ window.history (: यहाँ विवरण के लिए मेरी टिप्पणी के साथ अपने विकी है कुछ कोड है "एच")।

var History = window.History; 

यह देखने के लिए कि HTML5 इतिहास सक्षम है या नहीं। इतिहास। सक्षम। History.js अभी भी हैश टैग का उपयोग कर काम करेगा यदि यह नहीं है।

History.enabled 

2. ऐतिहासिक परिवर्तनों सुनो और यहाँ

से अपने दृश्य को अपडेट इतिहास राज्य परिवर्तन एडाप्टर वस्तु की statechange घटना के लिए बाध्य करने के लिए सुनने के लिए।

History.Adapter.bind(window,'statechange',function(){ 
    var State = History.getState(); 
    History.log(State.data, State.title, State.url); 
}); 

3. धक्का का उपयोग करके इतिहास राज्यों में हेरफेर या

इतिहास के लिए एक राज्य को जोड़ने के लिए की जगह, pushState कहते हैं। यह इतिहास स्टैक के अंत में एक राज्य जोड़ देगा जो ऊपर दिखाए गए 'स्टेटचेंज' ईवेंट को ट्रिगर करेगा।

History.pushState({data:"any kind of data object"}, "State Title", "?urlforthestate=1"); 

किसी राज्य को इतिहास में बदलने के लिए, replaceState पर कॉल करें। यह इतिहास के ढेर में अंतिम स्थिति को प्रतिस्थापित करेगा जो ऊपर दिखाए गए 'स्टेटचेंज' ईवेंट को ट्रिगर करेगा।

History.replaceState({data:"any kind of data object"}, "State Title", "?urlforthestate=1"); 

pushState और replaceState के बीच अंतर यह है कि pushState इतिहास सूची में एक राज्य जोड़ देगा, replaceState पिछले राज्य के ऊपर लिख देगा है।

नोट: पुशस्टेट और प्रतिस्थापन डेटा ऑब्जेक्ट को क्रमबद्ध करें, इसलिए वहां न्यूनतम डेटा का उपयोग करें।

4. यदि आप इतिहास में भ्रमण करने में सक्षम होने के लिए उपयोगकर्ता के लिए अतिरिक्त ui जोड़ना चाहते हैं, तो वापस नेविगेशन आदेशों

उपयोग का उपयोग करें और कोड के माध्यम से इतिहास में भ्रमण करने के लिए जाना।

History.back(); 
History.go(2); 

अतिरिक्त: का उपयोग करते हुए इतिहास

उपयोग करने के लिए इतिहास के साथ "एक" टैग के साथ "एक" टैग आप घटनाओं क्लिक रोकना और (event.preventDefault का उपयोग करके नेविगेट करने से ब्राउज़र को रोकने के लिए की आवश्यकता होगी) तरीका।

उदाहरण:

<a href="dogs/cats" title="Dogs and cats">Dogs and Cats</a> 

$('a')​.click(function(e){ 
    e.preventDefault(); 
    var url = $(this).attr('href'); 
    var title = $(this).attr('title'); 
    History.pushState({data:title}, title, url); 
})​; 

मुझे आशा है कि इस मदद करता है।

+0

मैं इसके साथ एक उदाहरण के रूप में भी संघर्ष कर रहा हूं। मुझे ऊपर दिखाया गया है, लेकिन पिछले इतिहास की तुलना में बहुत कुछ गायब है जो कि # विधि का उपयोग करता है। मैं एनवी मेनू में एंकर जैसे क्लिक करने योग्य वस्तुओं पर बाध्यकारी द्वारा पिछले # आधारित उदाहरण प्राप्त करने में सक्षम था। इसके बाद वह href पर आधारित हैंडलर को कॉल करेगा जहां AJAX कॉल किया जा सकता है। मैं नहीं देखता कि प्रत्येक यूआरएल के लिए क्लिक इवेंट यहां कैसे बाध्य होते हैं। मैंने जो भी कोशिश की है वह यूआरएल क्लिक घटनाओं को रोक नहीं देती है। – dansalmo

+0

आपको जो करना है वह उन hrefs पर क्लिक को रोकना है और वहां से जाना है। उदाहरण: $ ('ए')। क्लिक (फ़ंक्शन (ई) {e.preventDefault();})। E.preventDefault() के बाद आप href विशेषता का मान ले सकते हैं और पृष्ठ से दूर नेविगेट किए बिना इतिहास राज्यों को धक्का देने के लिए इसका उपयोग कर सकते हैं। – zachzurn

+0

धन्यवाद, मैंने ऐसा कुछ किया और इसे ऊपर जोड़ा लेकिन मुझे यकीन नहीं है कि यह वास्तव में उचित तरीका है या नहीं। साथ ही, मुझे नहीं पता कि e.preventDefault() की आवश्यकता क्यों है। ऐसा लगता है कि झूठी वापसी; वही काम करता है – dansalmo

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