क्या जावास्क्रिप्ट में बैक बटन हिट (या बैकस्पेस दबाया जा रहा है) का जवाब देने का कोई तरीका है जब केवल स्थान हैश बदलता है? यह कहना है कि जब ब्राउज़र सर्वर से संचार नहीं कर रहा है या पृष्ठ को पुनः लोड नहीं कर रहा है।जावास्क्रिप्ट में बैक बटन ईवेंट को पकड़ने का कोई तरीका है?
उत्तर
उपयोग hashchange
घटना:
window.addEventListener("hashchange", function(e) {
// ...
})
आप पुराने ब्राउज़र का समर्थन करने के Modernizr का HTML5 क्रॉस ब्राउज़र Polyfills विकि पृष्ठ में hashChange
Event section की जाँच की जरूरत है।
onLocationChange
भी उपयोगी हो सकता है। यह सुनिश्चित नहीं है कि यह मोज़िला-केवल एक चीज है, ऐसा लगता है कि यह हो सकता है।
क्या आपने इसे देखा? http://developer.yahoo.com/yui/history/
यह वास्तव में दिलचस्प है। अब मुझे यह समझने की जरूरत है कि यह इस व्यवहार को कैसे कर रहा है –
आह, इसलिए यह –
मैंने कुछ solution बनाया है जो कुछ लोगों के लिए उपयोग किया जा सकता है। बस अपने पेज पर कोड शामिल करें, और आप अपना स्वयं का फ़ंक्शन लिख सकते हैं जिसे बैक बटन क्लिक करने पर कॉल किया जाएगा।
मैंने आईई, एफएफ, क्रोम और सफारी में परीक्षण किया है, और सभी काम कर रहे हैं। आईई और एफएफ में निरंतर मतदान की आवश्यकता के बिना आईफ्रेम पर आधारित समाधान, हालांकि, अन्य ब्राउज़रों में सीमाओं के कारण, सफारी में स्थान हैश का उपयोग किया जाता है।
पर मतदान करके भी काम करता है यह बहुत चिकना दिखता है, और एक प्रशंसापत्र है। किसी और के पास इसके बारे में कहने के लिए कोई अच्छी चीज है? – MrBoJangles
मुझे नहीं पता कि यह मेरे लिए क्यों काम नहीं करता है, मैंने रास्ते से कोणीय का उपयोग किया, हैश यूआरएल ने आगे बढ़ना शुरू किया और अगली फॉरवर्ड जब मैंने जेएस फ़ाइल लोड की। –
सिर्फ एक लिंक प्रदान करने और समझाते हुए आपने इसका परीक्षण किया - अगर आप यह समझा सकते हैं कि यह कैसे काम करता है और आपने उस मार्ग पर जाने का फैसला क्यों किया, तो यह बहुत उपयोगी होगा। – domdambrogia
मैंने अपनी संतुष्टि के लिए इस मुद्दे को हल करने के लिए एक मजेदार हैक किया। मुझे एक AJAX साइट मिली है जो सामग्री को गतिशील रूप से लोड करती है, फिर window.location.hash को संशोधित करती है, और मेरे पास हैश को पार्स करने और उपयुक्त अनुभाग लोड करने के लिए $ (दस्तावेज़) .ready() पर चलाने के लिए कोड था। बात यह है कि मैं नेविगेशन के लिए अपने सेक्शन लोडिंग कोड से पूरी तरह से खुश था, लेकिन ब्राउजर बैक और फॉरवर्ड बटन को अवरुद्ध करने के लिए एक रास्ता जोड़ना चाहता था, जो विंडो स्थान बदलता है, लेकिन मेरे वर्तमान पेज लोडिंग रूटीन में हस्तक्षेप नहीं करता है, जहां मैं हेरफेर करता हूं window.location, और खिड़की पर मतदान। निरंतर अंतराल पर स्थान प्रश्न से बाहर था।
क्या मैं इस तरह के रूप एक वस्तु का निर्माण कर रहा कर समाप्त हो गया:
var pageload = {
ignorehashchange: false,
loadUrl: function(){
if (pageload.ignorehashchange == false){
//code to parse window.location.hash and load content
};
}
};
फिर, मैं एक पंक्ति मेरी साइट स्क्रिप्ट के hashchange घटना पर pageload.loadUrl
समारोह को चलाने के लिए इस तरह के रूप में जोड़ा गया,:
window.addEventListener("hashchange", pageload.loadUrl, false);
फिर, किसी भी समय मैं इस दिनचर्या पेज लोड हो रहा है ट्रिगर किए बिना window.location.hash
संशोधित करना चाहते हैं, मैं बस निम्न पंक्ति प्रत्येक window.location.hash =
लाइन से पहले जोड़ें:
pageload.ignorehashchange = true;
और उसके बाद प्रत्येक हैश संशोधन पंक्ति के बाद निम्न पंक्ति:
setTimeout(function(){pageload.ignorehashchange = false;}, 100);
तो अब मेरी अनुभाग लोड हो रहा है दिनचर्या आम तौर पर चल रहे हैं, लेकिन उपयोगकर्ता 'वापस' या 'आगे' बटन दबाता है, नया स्थान पार्स किया गया है और उपयुक्त अनुभाग लोड किया गया है।
history.js देखें। एक एचटीएमएल 5 राज्य परिवर्तन कार्यक्रम है और आप इसे सुन सकते हैं।
- 1. एंड्रॉइड बैक बटन ईवेंट
- 2. जावास्क्रिप्ट में "इतिहास। बैक" ईवेंट कैसे पकड़ें?
- 3. उत्पादन में जावास्क्रिप्ट त्रुटियों को पकड़ने का सबसे अच्छा तरीका?
- 4. ब्राउजर बैक बटन का दर्द
- 5. क्या UIView से WillRotateToInterfaceOrientation ईवेंट को पकड़ने का कोई तरीका है?
- 6. बैक बटन
- 7. एंड्रॉइड: टाइटेनियम में वापस (डिवाइस बैक बटन) ईवेंट
- 8. बैक बटन
- 9. पृष्ठ का पता लगाने का तरीका बैक बटन
- 10. UINavigationBar बैक बटन के शीर्षक को "बैक"
- 11. बैक बटन
- 12. मोबाइल सफारी बैक बटन
- 13. बैक बटन
- 14. क्या बैक बटन को दबाए जाने वाले बैक बटन का पता लगाने के लिए jquery का उपयोग करने का कोई तरीका है
- 15. बैक बटन
- 16. एक "बैक" बटन प्रदर्शित करें, केवल अगर कोई बैक (एमवीसी)
- 17. पीजेएक्स: बैक बटन
- 18. जावास्क्रिप्ट: एस्केप कुंजी = ब्राउजर बैक बटन
- 19. बैक बटन
- 20. जावास्क्रिप्ट में एएसपीनेट बटन के कमांड आर्ग्यूमेंट को सेट करने का कोई तरीका है?
- 21. किसी उपयोगकर्ता को "बैक" बटन
- 22. क्या यह जानने के लिए History.js में कोई तरीका है कि बैक बटन दबाया गया था
- 23. गतिशील रूप से पूरे पृष्ठ को आजमाने/पकड़ने का कोई तरीका है?
- 24. एंड्रॉइड पर हार्डवेयर बैक बटन के साथ ईवेंट कैसे पकड़ें?
- 25. गतिविधि में बैक बटन को कैसे संभालें
- 26. जब कोई उपयोगकर्ता लोड लोड बटन बंद करता है तो कोई जावास्क्रिप्ट ईवेंट होता है?
- 27. ब्राउज़र बैक बटन
- 28. सिल्वरलाइट में डब्ल्यूसीएफ अपवाद को पकड़ने का सबसे अच्छा तरीका?
- 29. WPF WebBrowser में 'बैक' और 'फॉरवर्ड' नेविगेशन बटन ईवेंट का उपयोग कैसे करें?
- 30. जावास्क्रिप्ट में सभी ईवेंट-श्रोता बाइंडिंग प्राप्त करने का कोई तरीका है?
यह देखने के लिए अच्छा है कि स्टैक ओवरव्लो के उत्तरों पुराने प्रश्नों के लिए पहले से ही Google हिट के शीर्ष पर हैं। यह मेरे लिए काम करता था, लेकिन अगर कोड बदल गया था तो कोड में कुछ समस्याएं थीं, जिससे हैश चेंज लाइन निष्पादित नहीं हुई। एक अच्छा टिप यह आखिरी करने के लिए हो सकता है। – ironfroggy
वर्तमान ब्राउज़रों में, आपको ऑनशैशचेंज इवेंट http://msdn.microsoft.com/en-us/library/cc288209(v=vs.85).aspx – EricLaw
उत्तर पर अच्छा सुधार करना चाहिए। – pqsk