2012-05-22 12 views
5
पर हुक

ऐसी onHistoryBack के रूप में एक तरह से एक हुक प्रदान करने के लिए है? मैं वर्तमान मेंइतिहास वापस जावास्क्रिप्ट

History.Adapter.bind (window, 'statechange', function() {}); 

साथ History.js उपयोग कर रहा हूँ लेकिन मैं उपयोगकर्ता presed अगर history.back (पूछने के लिए कोई रास्ता नहीं है) या यह एक History.pushState() कॉल .. किसी भी विचार का परिणाम है तो क्या होगा?

उत्तर

2

तरह से मैं ऐसा किया वास्तविक साइट पर प्रत्येक क्लिक पर सही करने के लिए एक चर सेट स्थापित करने के लिए किया गया था। राज्य परिवर्तक घटना तब इस चर की जांच करेगा। यदि यह सच था, तो उन्होंने साइट पर एक लिंक इस्तेमाल किया था। यदि यह गलत था, तो उन्होंने ब्राउज़र बैक बटन पर क्लिक किया था।

उदाहरण के लिए:

var clicked = false; 

$(document).on('click','a',function(){ 

    clicked = true; 

    // Do something 

}); 

History.Adapter.bind (window, 'statechange', function() { 

    if(clicked){ 
     // Normal link 
    }else{ 
     // Back button 
    } 

    clicked = false; 

}); 

आशा में मदद करता है :)

+0

धन्यवाद मैं आपके जैसे एक दृष्टिकोण का उपयोग कर कि समाधान कर लिया है @will, लेकिन मैं अपने History.pushState (...) कॉल लिपटे के बीच संशोधनों "क्लिक" निष्पादित किया जा रहा से "statechange" हुक को रोकने के लिए –

1

राज्यों के सभी History.savedStates में संग्रहीत हैं। हर बार वापस धक्का दिया जाता है एक और राज्य जोड़ा जाता है। तो सिद्धांत रूप में आप अगर History.savedStates[History.savedStates.length - 2] == currentState देखने के लिए History.savedStates का परीक्षण कर सकता है। इससे संकेत मिलता है कि उपयोगकर्ता चरण ए से, चरण बी तक वापस चला गया था। हालांकि उपयोगकर्ता बैक बटन की तुलना में अन्य तरीकों को प्राप्त कर सकता है - इसलिए आपको इसे उपयोगकर्ता की घटनाओं के संयोजन में उपयोग करने की आवश्यकता हो सकती है।

तुम भी एक बचाया राज्य लौटने के लिए History.getStateByIndex विधि का उपयोग कर सकते हैं।

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