मुझे जावास्क्रिप्ट में window.navigate या document.location का उपयोग करना चाहिए?


177

जावास्क्रिप्ट का उपयोग करके वर्तमान वेब पेज का स्थान बदलने के लिए उपयोग करने के लिए पसंदीदा तरीका क्या है? मैंने दोनों window.navigate और document.location का उपयोग किया है। क्या व्यवहार में कोई अंतर हैं? क्या ब्राउज़र कार्यान्वयन में अंतर हैं?

जवाबों:


220
window.location.href = 'URL';

वर्तमान विंडो के स्थान को बदलने के लिए मानक कार्यान्वयन है।


22
क्या आपके पास यह इंगित करने के लिए एक संदर्भ है कि window.location.href मानक कार्यान्वयन है? और क्या यह मानक सभी ब्राउज़रों पर समान रूप से लागू होता है? आप निश्चित रूप से जानकार हैं और 15+ वोट (प्लस स्वीकृत उत्तर) इसे और अधिक आधिकारिक बनाने में मदद करते हैं, हालांकि मुझे लगता है कि ब्राउज़र विकास टीमों से दावे को वापस लेने के लिए प्रलेखन देखना बेहतर होगा।
गोयूइक्स

6
@Goyuix, यह कहना शायद अधिक सटीक है कि window.location.hrefपूर्ण कार्यान्वयन है, लेकिन window.locationएक ही बात को पूरा करता है। Docs.sun.com/source/816-6408-10/location.htm देखें : "यदि आप locationकिसी ऑब्जेक्ट की संपत्ति को स्ट्रिंग असाइन करते हैं, तो जावास्क्रिप्ट एक locationऑब्जेक्ट बनाता है और उस स्ट्रिंग को अपनी hrefसंपत्ति में असाइन करता है ।"
जेम्स स्किडमोर

3
ऐसा लगता है कि इन लोगों ने निर्णय लिया कि यह व्यक्तिगत प्राथमिकता है: developer.mozilla.org/Talk:en/DOM/window.location । या नीचे के पास उदाहरण देखें, वे केवल उपयोग करते हैं window.locationलेकिन यह जरूरी नहीं है कि किसी भी तरह से संकेत न करें: developer.mozilla.org/en/window.location
जेम्स स्किडमोर

1
मैं वर्तमान में Android विकास के लिए इसका उपयोग कर रहा हूं। मुझे Android डिफ़ॉल्ट ब्राउज़र में JS को पृष्ठ से पुनर्निर्देशित करने में परेशानी हो रही है। मैंने एक नया पृष्ठ पुनः लोड करने के लिए तैयार की गई विधि को window.location.href = 'URL';भी आजमाया window.location.assign('URL');। अधिक जानकारी पाया जा सकता है w3schools.com/jsref/obj_location.asp
philipp

3
window.navigateइंटरनेट एक्सप्लोरर द्वारा उपयोग की जाने वाली एक स्वामित्व विधि है (मुझे यकीन है कि अन्य ब्राउज़र इसे अनुकूलता के लिए नकल करते हैं, क्रोम नहीं करता है)। document.locationया window.locationमानक ऑब्जेक्ट हैं (विभिन्न HTML / HTML5 / DOM विनिर्देशों देखें)। document.location = someURL(या window.location = someURL) संभवतः विरासत कोड के कारण समर्थित है। इसे करने का सही तरीका है document.location.href = someURL, या शायद document.location.assign(someURL)
PhistucK

11

window.navigate कुछ ब्राउज़र में समर्थित नहीं है

जावा स्क्रिप्ट में पुनर्निर्देशन के लिए कई तरीके हैं, नीचे दिए गए कोड और स्पष्टीकरण देखें

window.location.href = "http://krishna.developerstips.com/";
window.location = "http://developerstips.com/";
window.location.replace("http://developerstips.com/");
window.location.assign("http://work.developerstips.com/");

window.location.href ब्राउज़र के कैश से पेज लोड करता है और हमेशा सर्वर को अनुरोध नहीं भेजता है। इसलिए, यदि आपके पास कैश में उपलब्ध पृष्ठ का पुराना संस्करण है, तो यह सर्वर से एक ताजा पृष्ठ लोड करने के बजाय वहां रीडायरेक्ट करेगा।

यदि आप उपयोगकर्ता को मूल दस्तावेज़ पर वापस जाने के लिए बैक बटन का उपयोग करने की अनुमति देना चाहते हैं तो window.location.assign () पुनर्निर्देशन के लिए विधि।

window.location.replace () विधि यदि आप एक नए पृष्ठ पर पुनर्निर्देशित करना चाहते हैं और उपयोगकर्ता को बैक बटन का उपयोग करके मूल पृष्ठ पर नेविगेट करने की अनुमति नहीं है।


7

document.locatio n एक (निकृष्ट लेकिन अभी भी मौजूद है) रीड-ओनली स्ट्रिंग प्रॉपर्टी है, जिसे document.url द्वारा बदल दिया गया है


6

window.location फ्रेम को भी प्रभावित करता है,

सबसे अच्छा रूप मैंने पाया है:

parent.window.location.href

और बदतर है:

parent.document.URL 

मैंने बड़े पैमाने पर ब्राउज़र परीक्षण किया, और कई प्लगइन्स के साथ कुछ दुर्लभ IE दूसरे रूप के साथ अपरिभाषित हो गए।


उस तर्क से, top.window.location.href अभी भी बेहतर नहीं होगा?
Orwellophile

6

window.locationआपके ब्राउज़र लक्ष्य को प्रभावित करेगा। document.location केवल आपके ब्राउज़र और फ़्रेम / iframe को प्रभावित करेगा।


4

window.navigateकुछ ब्राउज़रों में समर्थित नहीं है, ताकि किसी से बचा जाए। स्थान संपत्ति का उपयोग करने वाले अन्य तरीकों में से कोई भी सबसे विश्वसनीय और सुसंगत दृष्टिकोण है


2

मैं साथ चलूँगा window.location = "http://...";। मैं कुछ वर्षों के लिए क्रॉस-ब्राउज़र जावास्क्रिप्ट को कोड कर रहा हूं, और मैंने इस दृष्टिकोण का उपयोग करके समस्याओं का कभी अनुभव नहीं किया है।

window.navigateऔर window.location.hrefमुझे थोड़ा अजीब लगता है।


13
window.location काम करता है, लेकिन यह तकनीकी रूप से गलत है क्योंकि "स्थान" एक वस्तु है।
जेम्स स्किडमोर

16
लेकिन जावास्क्रिप्ट में सब कुछ एक वस्तु है :)
cllpse

1
जबकि बहुत कुछ सब कुछ जावास्क्रिप्ट में एक वस्तु है, एक वस्तु को एक स्ट्रिंग प्रदान करना आम तौर पर इसके गुणों में से एक के लिए मूल्य निर्धारित नहीं करता है (जैसा कि window.location या document.location उनकी href संपत्ति के साथ करते हैं), लेकिन इसके बजाय उस ऑब्जेक्ट को एक के साथ बदल देता है स्ट्रिंग। इस मामले में, मौजूदा (क्वर्की) कार्यान्वयन और विरासत (और इतनी विरासत नहीं) सामग्री के साथ संगत होने के लिए एक ब्राउज़र क्विक जोड़ा गया था।
PhistucK

1

वास्तव में कोई अंतर नहीं है; इसे करने के लगभग 5 अलग-अलग तरीके हैं। हालांकि, लोगों को मैं सबसे अधिक बार देख रहे हैं document.locationऔर window.locationक्योंकि वे सभी प्रमुख ब्राउज़रों द्वारा समर्थित कर रहे हैं। (मैंने व्यक्तिगत रूप से कभी भी window.navigateउत्पादन कोड में उपयोग नहीं देखा है, इसलिए शायद इसका बहुत अच्छा समर्थन नहीं है?)


document.location सभी ब्राउज़रों में काम नहीं करता है। window.location करता है।
फिलिप लेबेर्ट

2
फ़ायरफ़ॉक्स Window.navigate
एंड्रयू हैरी

0

समर्थन के लिए document.locationभी अच्छा है, हालांकि यह एक पदावनत विधि है। मैं कुछ समय के लिए कोई समस्या नहीं के साथ इस विधि का उपयोग कर रहा हूँ। आप अधिक जानकारी के लिए यहां देख सकते हैं:

https://developer.mozilla.org/en-US/docs/Web/API/document.location


-5

आप अपने पृष्ठ का उपयोग करके स्थानांतरित कर सकते हैं

window.location.href =Url;

3
यह वास्तव में अधिक जानकारी नहीं देता है तो स्वीकार किए जाते हैं, और उत्तर उत्कीर्ण किया गया है ...
स्टुअर्ट सीगलर

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