2009-06-04 3 views
149

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

उत्तर

186
window.location.href = 'URL'; 

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

+18

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

+5

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

+2

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

1

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

+0

document.location सभी ब्राउज़रों में काम नहीं करता है। खिड़की। स्थान करता है। –

+4

हम्म, मेरे लिए काम करता है। यह किस ब्राउजर में काम नहीं करता है? –

+2

फ़ायरफ़ॉक्स विंडो का समर्थन नहीं करता है। –

2

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

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

+13

window.location काम करता है, लेकिन यह तकनीकी रूप से गलत है क्योंकि "स्थान" एक ऑब्जेक्ट है। –

+16

लेकिन जावास्क्रिप्ट में सबकुछ एक ऑब्जेक्ट है :) – roosteronacid

+1

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

6

document.locatio n एक (हटा दिया गया है लेकिन अभी भी अब तक) केवल पढ़ने के लिए स्ट्रिंग संपत्ति, document.url द्वारा बदल दिया है।

6

window.location आपके ब्राउज़र लक्ष्य को प्रभावित करेगा। दस्तावेज़। स्थान केवल आपके ब्राउज़र और फ्रेम/आईफ्रेम पर ही प्रभावित होगा।

5

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

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

parent.window.location.href 

और भी बदतर है:

parent.document.URL 

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

+0

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

4

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

0

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

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

-4

आप

window.location.href =Url; 
+2

यह वास्तव में स्वीकार नहीं किया गया है, और स्वीकार किए गए उत्तर को गुणा करें ... –

+3

आप आगे भी जा सकते हैं और तर्क दे सकते हैं कि आपने केवल स्वीकार्य उत्तर को चोरी किया है – Liam