Window.location.href = window.location.href और window.location.reload () के बीच अंतर


196

जावास्क्रिप्ट के बीच क्या अंतर है

window.location.href = window.location.href

तथा

window.location.reload()

कार्यों?

जवाबों:


247

यदि मुझे सही से याद है, तो window.location.reload()POST डेटा के साथ वर्तमान पृष्ठ को पुनः लोड window.location.href=window.location.hrefकरता है , जबकि POST डेटा को शामिल नहीं करता है।

जैसा कि नीचे टिप्पणी में @ W3Max द्वारा उल्लेख किया गया है, window.location.href=window.location.hrefयदि URL में एक एंकर (#) है तो आपको पृष्ठ को फिर से लोड नहीं करना होगा - आपको window.location.reload()इस मामले में उपयोग करना होगा ।

इसके अलावा, जैसा कि @Mic द्वारा नीचे उल्लेख किया गया है, window.location.reload()एक अतिरिक्त तर्क लेता है skipCacheताकि window.location.reload(true)ब्राउज़र का उपयोग करके कैश को छोड़ दें और सर्वर से पृष्ठ को फिर से लोड करें। window.location.reload(false)यदि इसके विपरीत होगा, और यदि संभव हो तो पेज को कैश से लोड करें।


11
ध्यान दें कि जब आप किसी पोस्ट पर window.location.reload () का उपयोग ब्राउज़र आप यदि आप पृष्ठ पुनः लोड करने के लिए डेटा को पुन: भेजने चाहते पूछना होगा
wimh

3
@ संदेश, क्या इस संदेश को अक्षम करने का कोई तरीका है?
क्रिश- I

40
window.location.href = window.location.href URL में कोई एंकर (#) होने पर पृष्ठ को पुनः लोड नहीं करेगा - आपको इस मामले में window.location.reload () का उपयोग करना होगा।
W3Max

5
यह भी ध्यान दें कि location.reload () भी सभी स्थिर सामग्री को पुनः लोड करने के लिए मजबूर करेगा (बहुत कुछ जैसे ctrl + f5 स्टाइल हार्ड रिफ्रेश) जबकि location.href को href (या pathname या URL) पर सेट नहीं करता है, जो एक महत्वपूर्ण (और) हो सकता है कुछ पृष्ठों पर लोड समय में अनावश्यक) अंतर।
रॉब वैन डैम

2
@ वेबमेल क्रोम: जीईटी फ़ायरफ़ॉक्स के साथ पृष्ठ को फिर से लोड करता है: पिछले अनुरोध को फिर से निष्पादित करता है, जिसका अर्थ है कि अगर यह एक पोस्ट था, तो आपको अच्छा पॉपअप मिलेगा जो आपसे पूछेगा कि डेटा को फिर से भेजें या नहीं
जुरी

51

यदि आप कहते हैं window.location.reload(true)कि ब्राउज़र कैश को छोड़ देगा और सर्वर से पृष्ठ को फिर से लोड करेगा। window.location.reload(false)इसके विपरीत करेंगे।

नोट: defaultमान window.location.reload()हैfalse


5
@ इस्माइल - डिफ़ॉल्ट गलत है।
ट्रेवर

2
Google Chrome 32, वेबआरटीसी का उपयोग करते समय मेरे लिए सही / गलत काम नहीं किया। मैं webRTC के साथ एक iframe था और केवल window.location.href = window.location.hrefट्रिक का उपयोग कर रहा था।

यदि आपने पृष्ठ पर किसी प्रपत्र में परिवर्तन किए हैं, तो उपयोग करते समय या ब्राउज़र के आधार पर परिवर्तन गायब हो सकते हैं (कैश्ड मूल्यों पर वापस लौटें) । पृष्ठ का संपूर्ण ताज़ा करने के लिए, उपयोग करें । location.reload()location.reload(false)location.reload(true)
सनकट २२

32

अंतर यह है कि

window.location = document.URL;

यदि URL में कोई हैश (#) है (इसके बाद या इसके बिना कुछ), तो पृष्ठ को फिर से लोड नहीं किया जाएगा

window.location.reload();

पेज पुनः लोड करेगा।


2
सभी ब्राउज़रों में हैसिंग समाप्त होने के साथ यह समस्या नहीं है। यदि एंडिंग हैश आपके लिए एक चिंता का विषय है, तो कोशिश करें: window.location = document.URL.replace (/ # $ /, '');
वाल्टर स्टबोज़

1
कम से कम क्रोम का संबंध है। मैं दीक्षित करने के लिए इस्तेमाल किया location.href = location.href, लेकिन मैं सिर्फ उस सटीक व्यवहार पर ध्यान दिया और शब्द का प्रसार करने के लिए SO पर आया। location.reload()इसके बजाय बस का उपयोग करें ।
पायल

1
आप ऐसी नियमित अभिव्यक्ति लिखने के बजाय window.location.pathname का उपयोग कर सकते हैं। उदाहरण के लिए:window.location.replace(window.location.pathname);
आर्सेनी

20

यदि आप बूलियन को पुनः लोड करने के लिए जोड़ते हैं तो window.location.reload(true)यह सर्वर से लोड होगा।

यह स्पष्ट नहीं है कि यह बूलियन कितना समर्थित है, डब्ल्यू 3 ऑर्ग का उल्लेख है कि एनएस इसका समर्थन करता था

वहाँ खिड़की की सामग्री के बीच एक अंतर हो सकता है। Location.href और document.URL - वहाँ कम से कम स्थान और गैर-मानक और पदावनत दस्तावेज़ के बीच एक अंतर हुआ करता था। आवंटन, जिसे पुनर्वितरण के साथ करना था, लेकिन वह वास्तव में अंतिम सहस्राब्दी है।

प्रलेखन उद्देश्यों के लिए, मैं window.location.reload () का उपयोग करूंगा क्योंकि वह वही है जो आप करना चाहते हैं।


इस अंतर को समझाने के बाद से stackoverflow.com/a/5091619/429972 को देखें ।
जंत्रो

14

जैसा कि कहा गया है, जब URL में हैश (#) है, तो href को संशोधित करके पृष्ठ को पुनः लोड नहीं किया जाएगा। इस प्रकार, मैं इसका उपयोग नियमित अभिव्यक्तियों के बजाय इसे पुनः लोड करने के लिए करता हूं:

if (!window.location.hash) {
    window.location.href = window.location.href;
} else {
    window.location.reload();
}

6

इस सवाल के पार आईई में विशेष रूप से IE9 में कुछ असामान्य व्यवहार पर शोध किया, पुराने संस्करणों की जाँच नहीं की। ऐसा लगता है

window.location.reload();

रिफ्रेश में परिणाम जो एक सेकंड के लिए पूरी स्क्रीन को खाली कर देता है, जहाँ पर

 window.location = document.URL;

पृष्ठ को अधिक तेज़ी से ताज़ा करता है, लगभग अगोचर रूप से।

थोड़ा और अधिक शोध करना, और फ़िडलर के साथ कुछ प्रयोग करना, ऐसा लगता है कि window.location.reload()सर्वर से कैश और फिर से लोड करना होगा चाहे आप इसके साथ बूलियन पास करें या नहीं, इसमें आपकी सभी संपत्तियां (चित्र, स्क्रिप्ट, स्टाइल शीट) शामिल हैं। आदि) फिर से। इसलिए यदि आप केवल पृष्ठ को रीफ़्रेश करना चाहते हैं तो HTML window.location = document.URLबहुत जल्दी और कम ट्रैफ़िक के साथ लौटेगा।

ब्राउज़रों के बीच व्यवहार में एक अंतर यह है कि जब IE9 पुनः लोड विधि का उपयोग करता है तो यह दृश्य पृष्ठ को साफ़ करता है और प्रतीत होता है कि इसे खरोंच से पुनर्निर्मित किया जाता है, जहां FF और क्रोम प्रतीक्षा करते हैं जब तक कि वे नई संपत्ति प्राप्त नहीं करते हैं और यदि वे भिन्न हैं, तो उनका पुनर्निर्माण करते हैं।


window.location = document.URL पृष्ठ को window.location.reload () की तरह पुनः लोड करता है। क्या आप शीर्ष पर वापस स्क्रॉल किए बिना ताज़ा करने के लिए कला की एक स्थिति है, या जैसा कि आपने कहा था?
Bigmugcup

6

फ़ायरफ़ॉक्स (12.0) में एक अंतर यह है कि एक पोस्ट से दिए गए पृष्ठ पर, पुनः लोड () एक चेतावनी को पॉप करेगा और एक पुन: पोस्ट करेगा, जबकि एक URL असाइनमेंट एक GET करेगा।

Google Chrome दोनों के लिए एक GET करता है।


1
Chrome 38 अब .reload () के लिए POST का उपयोग करने लगता है।
ग्लेन लिटिल

3

JSF का उपयोग करते हुए, अब मैं सत्र समाप्त होने के बाद रिफ्रेश के साथ समस्या का सामना कर रहा हूं : पृष्ठ पुनः लोड करने के बाद प्राइमफेस व्यू व्यूएक्सपायर्ड एक्सफ़ेक्शन और कुछ जांच के साथ मुझे फ़ायर्फ़ॉक्स में एक अंतर मिला है:

कॉलिंग window.location.reload()एफएफ पर ताज़ा आइकन पर क्लिक करने जैसे काम करता है, यह लाइन जोड़ता है

Cache-Control max-age=0

सेटिंग के दौरान window.location.hrefURL लाइन में ENTER दबाने जैसा काम करता है, यह उस लाइन को नहीं भेजता है।

यद्यपि दोनों को GET के रूप में भेजा जाता है, पहला (पुनः लोड) पिछले डेटा को पुनर्स्थापित कर रहा है और एप्लिकेशन असंगत स्थिति में है।


1

नहीं, वहाँ नहीं होना चाहिए। हालांकि, यह संभव है कि कुछ ब्राउज़रों में अंतर हो, इसलिए या तो (या न ही) किसी मामले में काम नहीं कर सकते हैं।


1

लगभग 3 वर्षों के मेरे अनुभव से, मुझे कोई अंतर नहीं मिला ...

संपादित करें: हाँ, जैसा कि उनमें से एक ने यहां कहा है, केवल एक बूलियन पैरामीटर को window.location.reload () में अंतर करना है। यदि आप सही पास करते हैं , तो ब्राउज़र एक ताज़ा पृष्ठ लोड करता है, लेकिन यदि गलत है , तो कैश संस्करण लोड किया गया है ...


0

हमारे मामले में हम सिर्फ वेबव्यू में पेज को फिर से लोड करना चाहते हैं और कुछ कारणों से हम यह पता नहीं लगा सके कि क्यों! हम लगभग हर उस समाधान को आजमाते हैं जो वेब पर है, लेकिन location.reload () या वैकल्पिक समाधानों जैसे window.location.reload (), location.reload (true), ... का उपयोग करके पुन: लोड नहीं होने से अटक गया है ...!

यहाँ हमारे सरल समाधान है:

बस इस तरह खाली "href" अटेंशन मान के साथ एक <a> टैग का उपयोग करें:

< a href="" ...>Click Me</a>

(कुछ मामलों में आपको पुनः लोड करने के लिए लक्ष्य के क्लिक पर "रिटर्न ट्रू" का उपयोग करना होगा)

अधिक जानकारी के लिए इस प्रश्न की जाँच करें: क्या खाली href मान्य है?


-3

window.location.href, इसने Android 5.1 से वेबव्यू में मेरे जीवन को बचाया। पृष्ठ Android से इस संस्करण में location.reload () के साथ पुनः लोड नहीं होता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.