क्या कोई ऐसी घटना है जहां मैं इतिहास की स्थिति संशोधित होने पर सदस्यता ले सकता हूं? कैसे?इतिहास.pushState और history.replaceState का उपयोग कब किया जाए?
उत्तर
onpopstate घटना सक्रिय किया जाना चाहिए इतिहास बदल जाता है, आप इसे करने के लिए अपने कोड में इस तरह बाध्य कर सकते हैं:
window.onpopstate = function (event) {
// do stuff here
}
इस घटना को भी पृष्ठ लोड होने के लिए, आप घटना है कि क्या निर्धारित कर सकते हैं निकाल दिया जा सकता है एक राज्य संपत्ति के लिए घटना वस्तु की जाँच करके निकाल दिया गया था एक पृष्ठ लोड से, या का उपयोग कर pushState/replaceState द्वारा, यह वर्तमान में कोई onpushstate घटना दुर्भाग्य है अगर घटना एक पृष्ठ लोड
window.onpopstate = function (event) {
if (event.state) {
// history changed because of pushState/replaceState
} else {
// history changed because of a page load
}
}
वहाँ के कारण हुई थी अपरिभाषित हो जाएगा , इस के आसपास पाने के लिए आपको लपेटने की जरूरत है अपने स्वयं के ऑनशशस्ट ईवेंट को लागू करने के लिए पुशस्टेट और प्रतिस्थापन दोनों विधियां।
मेरे पास एक लाइब्रेरी है जो पुशस्टेट के साथ काम करना आसान बनाता है, इसे Davis.js नामक चेक आउट करने के लायक हो सकता है, यह पुशस्टेट के आधार पर रूटिंग के साथ काम करने के लिए एक सरल एपीआई प्रदान करता है।
मैं उपयोग करने के लिए यह भी जब pushState
और replaceState
कहा जाता है के बारे में सूचित किया जाता था:
// Add this:
var _wr = function(type) {
var orig = history[type];
return function() {
var rv = orig.apply(this, arguments);
var e = new Event(type);
e.arguments = arguments;
window.dispatchEvent(e);
return rv;
};
};
history.pushState = _wr('pushState'), history.replaceState = _wr('replaceState');
// Use it like this:
window.addEventListener('replaceState', function(e) {
console.warn('THEY DID IT AGAIN!');
});
हालांकि यह आमतौर पर overkill है। और यह सभी ब्राउज़रों में काम नहीं कर सकता है। (मुझे केवल अपने ब्राउज़र के मेरे संस्करण की परवाह है।)
एनबी। यह Google क्रोम एक्सटेंशन सामग्री स्क्रिप्ट में भी काम नहीं करता है, क्योंकि इसे साइट के जेएस पर्यावरण को बदलने की अनुमति नहीं है। आप कोड के साथ <script>
डालने के द्वारा उस पर काम कर सकते हैं, लेकिन यह और भी अधिक है।
- 1. जब सीडीएन का उपयोग करके होस्ट किया जाए और कब नहीं किया जाए?
- 2. इतिहास.pushState और पेज रीफ्रेश
- 3. संदर्भ द्वारा कब पास किया जाए और सी ++ में पॉइंटर द्वारा कब पास किया जाए?
- 4. पढ़ा गया और जैक्सन में रीड ट्री: किस का उपयोग कब किया जाए?
- 5. Flask.g का उपयोग कब किया जाना चाहिए?
- 6. ट्यूपल का उपयोग कब और कब करें?
- 7. स्ट्रिंगियो का उपयोग कब किया जाता है?
- 8. रणनीति पैटर्न का उपयोग कब और क्यों किया जाना चाहिए?
- 9. कब, कहां और कैसे कतारों का उपयोग किया जाना चाहिए?
- 10. जब NoSQL का उपयोग नहीं किया जाए?
- 11. विंडोज़ में "जॉब" (बाल प्रक्रिया की बात) क्या है, और इसका उपयोग कब किया जाए?
- 12. @JsonProperty प्रॉपर्टी का उपयोग कब किया जाता है और इसके लिए क्या उपयोग किया जाता है?
- 13. IList का उपयोग कब करें और सूची का उपयोग कब करें
- 14. कोई भी स्कोप बीन नहीं है और इसका उपयोग कब किया जाए?
- 15. स्टब्स और मोजे का उपयोग कब करें?
- 16. क्लोजर में 'निरंतर' का उपयोग कब करें, इसके तर्कों का मूल्यांकन कब और कब किया जाता है?
- 17. .mdf और कब .sdf का उपयोग कब करें?
- 18. viewDidLoad का उपयोग कब करें और awakeFromNib
- 19. "willChangeValueForKey" और "didChangeValueForKey" का उपयोग कब करें?
- 20. क्या इतिहास.pushstate के लिए कोई कॉलबैक है?
- 21. OSGi EventAdmin का उपयोग कब करें और कब नहीं?
- 22. डेटाबेस दृश्यों का उपयोग कब करें और कब नहीं?
- 23. टैग/लेबल का उपयोग कब करें और शाखा कब करें?
- 24. डब्ल्यूसीएफ डेटा सेवाओं का उपयोग कब करें और कब नहीं?
- 25. <%# ... %> और <%= ... %> कब उपयोग किया जाना चाहिए?
- 26. क्रोम एक्सटेंशन से निगरानी इतिहास.pushstate
- 27. $ .extend ({...}) का उपयोग कब करें?
- 28. मॉलोक का उपयोग कब और क्यों करें?
- 29. क्यों और कब __noop का उपयोग करें?
- 30. IEquatable का उपयोग कब करें और क्यों
ऐसा लगता है कि event.state अभी भी पेज लोड (क्रोम) पर सेट हो सकता है। – GolezTrol
मोज़िला/फ़ायरफ़ॉक्स पृष्ठ लोड पर एक ऑनपॉपेट ईवेंट नहीं छोड़ता है लेकिन सफारी/क्रोम – tom
मेरे मामले में, यह घटना अजाक्स कॉल की सफलता के बाद होती है। संभवतः इस वजह से, मैं पहली बार घटना का पता लगाने में सक्षम नहीं हूं। अगर मैं बैक/फॉरवर्ड बटन पर क्लिक करता हूं तो यह अच्छा काम करता है हालांकि मैं अपने उपयोगकर्ता को उन इतिहास बटनों पर क्लिक करने की उम्मीद नहीं कर रहा हूं। –