मैं पढ़ रहा था और बीच फायदे / नुकसान के लिए खोज replaceState()और pushState()। मोज़िला का लेख भी पढ़ें , और यह दिलचस्प परीक्षण लेकिन अभी भी मेरे लिए मतभेद स्पष्ट नहीं है।
कोई भी एक व्याख्या करने के लिए कि वे क्या अलग हैं?
जवाबों:
replaceState()ब्राउज़र में URL को बदल देगा (यानी बैक बटन दबाने से आपको वापस नहीं लगेगा)
pushState() URL को बदल देगा, और पुराने को ब्राउज़र हिस्ट्री में रखेगा (यानी बैक बटन को दबाने पर आपको वापस ले जाएगा)
आपके लिंक से
history.replaceState () बिल्कुल history.pushState () को छोड़कर संचालित होता है, सिवाय इसके कि प्रतिस्थापन () एक नया बनाने के बजाय वर्तमान इतिहास प्रविष्टि को संशोधित करता है।
जब आप कुछ उपयोगकर्ता कार्रवाई के जवाब में वर्तमान इतिहास प्रविष्टि की स्थिति या URL को अद्यतन करना चाहते हैं, तो प्रतिस्थापन () विशेष रूप से उपयोगी है।
यदि आप केवल इतिहास प्रविष्टि को अपडेट करना चाहते हैं, तो replaceState()अन्यथा उपयोग करें pushState(), जो पुरानी प्रविष्टि को बनाए रखेगा और एक नया निर्माण करेगा। वे समान हैं, लेकिन दोनों के अलग-अलग प्रभाव हैं इसलिए यह इस बात पर निर्भर करता है कि आप नई इतिहास प्रविष्टियों को बदलना या बनाना चाहते हैं या नहीं।
इसे ऐसे समझें कि मैं एक कार्ड को दूसरे के ऊपर रखकर (चेहरे को ऊपर करके) कार्ड के डेक पर काम कर रहा हूं और आप केवल शीर्ष कार्ड को ढेर में रख सकते हैं (यानी आखिरी कार्ड जो मैं निपटाता हूं)। मान लीजिए कि मैंने ढेर पर दिल का एक जैक लगा दिया। अब अगले कार्ड के लिए अगर मैं उपयोग करता हूं replaceState, तो मैं उस जैक ऑफ हार्ट को बंद कर देता हूं और अगला कार्ड डाल देता हूं। कार्ड की संख्या समान है क्योंकि हमने सिर्फ शीर्ष कार्ड को बदल दिया है। अगर मैंने pushStateइसके बजाय इस्तेमाल किया होता, तो मैं अगला कार्ड जैक ऑफ हार्ट्स के ऊपर डाल देता (इसलिए अब दोनों ढेर में मौजूद हैं और ढेर एक कार्ड अधिक है)।
यूआरएल के साथ सादृश्य में कार्ड स्वैप करें और यही URL इतिहास संशोधित किया गया है।