2012-04-19 11 views
12

मैं जब उपयोगकर्ता अपने ब्राउज़र में वापस/आगे बटन दबाया गया है का पता लगाने के लिए एक रास्ता खोजने की कोशिश कर रहा हूँ।रीढ़ मार्गों - ब्राउज़र का पता लगाने के वापस बटन प्रेस

मैं अपने विचारों प्रस्तुत करने के लिए, मार्गों को संभालने के लिए रीढ़ की हड्डी के साथ रीढ़ की हड्डी का उपयोग कर रहा

मुद्दा मैं कहीं से भी इस पेज परिवर्तन घटना में हुक नहीं कर सकते हैं।

मैं अपने विचारों के लिए मेरी इनिशियलाइज़ समारोह में एक लॉग डालने की कोशिश की .. लेकिन यह फिसल गया नहीं है जब मैं वापस बटन का उपयोग करें।

मैं सच में यकीन है कि और कैसे यह पेज परिवर्तन का पता लगाने के नहीं हूँ।

उत्तर

-2

आपको Backbone.Router का उपयोग करना चाहिए और यह सुनिश्चित करना चाहिए कि आप अपना आवेदन शुरू करते समय Backbone.history.start() को न भूलें।

कुछ उपयोगी जानकारी here और here

असल में दूसरी कड़ी में एक लेख नहीं है, लेकिन एक ब्लॉग पाया जा सकता है। और जिसने इसे लिखा वह वास्तव में इस विषय के बारे में बहुत कुछ जानता है।

युपीडी: विचार है कि रीढ़ की हड्डी के रूटर आग आबद्ध तरीकों जब अपने URL में बदलाव है। तो आपको बस अपना तर्क इस विधि में रखना चाहिए और इस तरह आप इसे ट्रैक करने में सक्षम होंगे। शायद यह बहुत ही स्वचालित तरीका नहीं है, और यह कुछ कोड लिखने में लगेगा लेकिन मुझे लगता है कि इसे काम करना चाहिए।

+2

हाँ, मैं इसे पढ़ा। विचार यह है कि जब आपके यूआरएल बदलते हैं तो रीढ़ की हड्डी की आग बाध्य होती है। तो आपको बस अपना तर्क इस विधि में रखना चाहिए और इस तरह आप इसे ट्रैक करने में सक्षम होंगे। शायद यह बहुत ही स्वचालित तरीका नहीं है, और यह कुछ कोड लिखने में लगेगा लेकिन मुझे लगता है कि इसे काम करना चाहिए। – Ph0en1x

+0

@ Ph0en1x आप सही हैं कि बैकबोन के इतिहास ऑब्जेक्ट का उपयोग करके समाधान प्रदान किया जा सकता है क्योंकि यह साइट के भीतर नेविगेट करते समय बैक बटन दबाए जाने पर 'पॉपस्टेट' ईवेंट पर नज़र रखता है। हालांकि, आपका उत्तर यह स्पष्ट नहीं करता है कि आप यही कह रहे हैं और न ही ओपी बैकबोन का उपयोग करके अपनी समस्या का समाधान कैसे करेगा। इतिहास। –

+1

मजेदार, उस उत्तर के लिए बहुत सारे माइनस हैं। हालांकि 2015 के अंत में भी जानबूझकर सही जवाब दें। लेकिन ऐसा लगता है कि लोग ध्यान से पढ़ना नहीं चाहते हैं और सोचना नहीं चाहते हैं। वे सिर्फ स्निपेट कॉपी-पेस्ट करना चाहते हैं। – Ph0en1x

1

आप Backbone.Router का विस्तार कर सकते हैं और route और open विधि को ओवरलोड कर सकते हैं। आपके पास उन दो विधियों में सभी पेज चेंजिंग हैंडल हैं। तो बस उन्हें रीढ़ की हड्डी फ़ाइल से दोबारा दोहराएं, और इसके साथ खेलो।

0

जाहिर भी GitHub पता लगाने के लिए कैसे जो बटन दबाया गया था पता नहीं है;) वे इस कोड का उपयोग:

slideTo: function (a) { 
     var b = this.pathFromURL(a), 
     c = this.frameForPath(b), 
     d = $("#slider .frame-center").attr("data-path") || ""; 
     c.is(".frame-center") || (d == "/" || b.split("/").length > d.split("/").length ? 
     this.slideForwardTo(a) : this.slideBackTo(a)) 
} 
10

आप रीढ़ route घटना के लिए एक कॉलबैक बाध्य कर सकते हैं:

Backbone.history.on('route', function() { 
     // Do your stuff here 
    }); 

आप आप खड़े थे पता करने के लिए Backbone.history.getFragment() का उपयोग कर सकते हैं।

+0

एक समापन कोष्ठक खोना) – fadomire

3

जब बैक बटन दबाया जाता है तो पॉपस्टेट ईवेंट ट्रिगर किया जाता है।

मैं कोड के इस टुकड़े का उपयोग कर रहा:

// listening for the browser's back button 
window.addEventListener('popstate', function(e) { 
    router.navigate(Backbone.history.getFragment(), { trigger: true, replace: true }); 
}); 
संबंधित मुद्दे