मैं पृष्ठ को अद्यतन किए बिना और ब्राउज़र इतिहास को अद्यतन किए बिना पूर्ण पृष्ठ से सामग्री के टुकड़े लोड करने के लिए तीन लिंक का उपयोग करके एक सरल पूर्ण इतिहास.जेएस उदाहरण को एक साथ रखने में सक्षम था।क्या यह History.js का उपयोग करने का एक उचित तरीका है?
यहाँ प्रासंगिक कोड के टुकड़े कर रहे हैं - एक पूरा काम कर उदाहरण यहाँ http://jsfiddle.net/PT7qx/show
<a href="/page-header">Page Header</a>
<a href="/login-form">Login Form</a>
<a href="/nothing">Nothing</a>
<script>
var History = window.History;
if (!History.enabled) {
return false;
}
History.Adapter.bind(window, 'statechange', function() {
var State = History.getState();
History.log(State.data, State.title, State.url);
if (State.title == 'Page Header') {
$('#content').load('/user/login/ .pageHeader > *');
}
if (State.title == 'Login Form') {
$('#content').load('/user/login/ #common-form > *');
}
if (State.title == 'Nothing') {
$('#content').empty()
}
});
$('body').on('click', 'a', function(e) {
var urlPath = $(this).attr('href');
var Title = $(this).text();
History.pushState(null, Title, urlPath);
// prevents default click action of <a ...>
return false;
});
<\script>
है मैं अगर यह सही उपयोग है जानना चाहूंगा। पिछले संस्करण में # यूआरएल का उपयोग करके किसी ईवेंट से जुड़ने की क्षमता थी। मैंने इस नवीनतम संस्करण के साथ यूआरएल को बाध्यकारी घटनाओं के लिए कोई उदाहरण नहीं देखा है, इसलिए मैंने इतिहास को कॉल करने के लिए .on() क्लिक ईवेंट का उपयोग किया और सॉर्ट किया कि वहां किस लिंक पर क्लिक किया गया था।
मुझे यकीन नहीं है कि यह इस उदाहरण के लिए इसे पूरा करने का सबसे अच्छा तरीका है या नहीं।
मैं पार्टी के लिए थोड़ी देर हो चुकी हूँ की अजाक्स लोड करता है, लेकिन यह ध्यान देने योग्य बात है कि 'History.pushState (लायक है {urlPath: window.location.pathname()}, $ (" शीर्षक ")। पाठ(), State.urlPath); 'एक त्रुटि फेंक देगा, क्योंकि window.location.pathname() एक फ़ंक्शन नहीं है। बस कोष्ठक हटा दें और यह एक आकर्षण की तरह काम करता है। – indextwo
इसे पकड़ने के लिए धन्यवाद। यह सुनिश्चित नहीं है कि मैंने इसे कैसे याद किया क्योंकि मैंने सोचा था कि मैं इसे एक वर्किंग वर्जन से चिपका रहा हूं। – dansalmo
@ डान्सल्मो, यदि मैंने ऊपर दिखाए गए उदाहरण की तरह एक उदाहरण लागू किया है (http://stackoverflow.com/a/13314438/1867808) तो मैं index.html फ़ाइल से संबंधित अतिरिक्त सामग्री कहां रखूं? क्या मैं इसे प्रतिक्रिया.html में डालता हूं जो index.html के समान फ़ोल्डर में है? –