document.location.href
और document.location
के बीच क्या अंतर है?document.location.href और document.location के बीच क्या अंतर है?
क्या यह ब्राउज़र में समान है?
document.location.href
और document.location
के बीच क्या अंतर है?document.location.href और document.location के बीच क्या अंतर है?
क्या यह ब्राउज़र में समान है?
document.location
window.location
के लिए समानार्थी है जिसे लगभग जावास्क्रिप्ट मौजूद होने तक लगभग बहिष्कृत किया गया है। इसका इस्तेमाल न करें।
location
एक संरचित वस्तु है, जो यूआरएल के हिस्सों से संबंधित गुणों के साथ है। location.href
एक ही स्ट्रिंग में पूरा यूआरएल है। किसी स्ट्रिंग को असाइन करना उसी प्रकार के नेविगेशन के कारण परिभाषित किया गया है, इसलिए अपना चयन करें।
(मैं location.href= something
को लिखने पर विचार मामूली बेहतर यह क्या कर रहा है के बारे में यह थोड़ा और अधिक स्पष्ट है के रूप में किया जाना है। आप आम तौर पर सिर्फ location= something
से बचने के लिए के रूप में यह एक चर काम की तरह गुमराह लग रहा है चाहेंगे। window.location= something
हालांकि ठीक है।)
है क्या यह 'document.location' या' window.location' है जिसे बहिष्कृत किया गया है? – enguerran
'document.location'। इसे अब HTML5 में बहिष्कृत नहीं किया गया है, इसके लिए यह क्या लायक है। – bobince
तो ... एचटीएमएल 5 में, कुछ भी बहिष्कृत नहीं किया गया है। और 'document.location'' window.location' से समान है 'स्थान' से समान है, है ना? – enguerran
दस्तावेज़। स्थान विंडो.लोकेशन के पक्ष में बहिष्कृत किया गया है, जिसे केवल स्थान से एक्सेस किया जा सकता है, क्योंकि यह वैश्विक वस्तु है।
स्थान वस्तु में कई गुण और विधियां हैं। यदि आप इसे स्ट्रिंग के रूप में उपयोग करने का प्रयास करते हैं तो यह location.href जैसा कार्य करता है।
document.location
एक वस्तु है, जबकि document.location.href
एक स्ट्रिंग है। लेकिन पूर्व में toString
विधि है, इसलिए आप इसे से पढ़ सकते हैं जैसे कि यह एक स्ट्रिंग था और document.location.href
के समान मान प्राप्त करें।
कुछ ब्राउज़रों में - अधिकांश आधुनिक, मुझे लगता है - आप document.location
को भी एक स्ट्रिंग के रूप में असाइन कर सकते हैं। Mozilla documentation के अनुसार, इस उद्देश्य के लिए window.location
का उपयोग करना बेहतर है क्योंकि document.location
मूल रूप से केवल पढ़ने के लिए था और इसलिए व्यापक रूप से समर्थित नहीं हो सकता है।
document.location
एक ऐसी वस्तु है जिसमें वर्तमान स्थान के लिए गुण शामिल हैं।
href
संपत्ति इन गुणों में से एक है, जिसमें पूरा यूआरएल है, यानी सभी अन्य गुण एक साथ रखे गए हैं।
कुछ ब्राउज़र आपको location
ऑब्जेक्ट पर एक यूआरएल असाइन करने की अनुमति देते हैं और ऐसा करते हैं जैसे आपने इसे href
संपत्ति में असाइन किया है। कुछ अन्य ब्राउज़र अधिक picky हैं, और आपको href
संपत्ति का उपयोग करने की आवश्यकता है। इस प्रकार, कोड को सभी ब्राउज़रों में काम करने के लिए, आपको href
संपत्ति का उपयोग करना होगा।
window
और document
ऑब्जेक्ट्स में location
ऑब्जेक्ट है। आप window.location.href
या document.location.href
का उपयोग कर यूआरएल सेट कर सकते हैं। हालांकि, तार्किक रूप से document.location
ऑब्जेक्ट केवल पढ़ने के लिए होना चाहिए (क्योंकि आप दस्तावेज़ के यूआरएल को नहीं बदल सकते हैं; यूआरएल को एक नया दस्तावेज़ लोड करना), इसलिए सुरक्षित पक्ष पर रहने के लिए आपको window.location.href
का उपयोग करना चाहिए, जब आप सेट करना चाहते हैं यूआरएल जबकि document.location
ही एक वस्तु है
बहुत अच्छा स्पष्टीकरण, धन्यवाद। – Michel
typeof document.location; // 'object'
typeof document.location.href; // 'string'
href
संपत्ति, एक श्रृंखला है।
अकेले डॉट-नोटेशन इसे स्पष्ट करता है –
जून 14 वीं 2013 (एचटीएमएल 5) के रूप में, एक महत्वपूर्ण अंतर
Browser : Chrome 27.X.X
संदर्भ है: document.location, window.location (MDN)
type: Object
वस्तु जब अपने आप में कहा जाता document.location
अपने origin
+ pathname
गुण श्रेणीबद्ध लौट आते हैं।
केवल स्ट्रिंग के रूप में यूआरएल पुनर्प्राप्त करने के लिए, केवल पढ़ने के लिए document.URL
संपत्ति का उपयोग किया जा सकता है।
ancestorOrigins: DOMStringList
assign: function() { [native code] }
hash: ""
host: "stackoverflow.com"
hostname: "stackoverflow.com"
href: "http://stackoverflow.com/questions/2652816/what-is-the-difference-between-document-location-href-and-document-location?rq=1"
origin: "http://stackoverflow.com"
pathname: "https://stackoverflow.com/questions/2652816/what-is-the-difference-between-document-location-href-and-document-location"
port: ""
protocol: "http:"
reload: function() { [native code] }
replace: function() { [native code] }
search: "?rq=1"
toString: function toString() { [native code] }
valueOf: function valueOf() { [native code] }
type: string
http://stackoverflow.com/questions/2652816/what-is-the-difference-between-document-location-href-and-document-location?rq=1
यहाँ अंतर का व्यावहारिक महत्व का एक उदाहरण है और यदि आप नहीं जानते कि यह कैसे आप काट सकते हैं यह (document.location एक ऑब्जेक्ट और document.location.href एक स्ट्रिंग है):
हम http://social.ClipFlair.net पर मोनोक्स सोशल सीएमएस (http://mono-software.com) मुफ्त संस्करण का उपयोग करते हैं और हम उन्हें कुछ स्थानीय पृष्ठों पर भाषा बार वेबपार्ट जोड़ना चाहते हैं, लेकिन कुछ अन्य लोगों (उदा। चर्चाओं पर) हम स्थानीयकरण का उपयोग नहीं करना चाहते थे। इसलिए हमने अपने सभी .aspx (ASP.net) पृष्ठों पर उपयोग करने के लिए दो मास्टर पेज बनाए, पहले में हमारे पास भाषा बार वेबपार्ट था और दूसरे के पास/lng/el-GR आदि को हटाने के लिए निम्न स्क्रिप्ट थी यूआरएल और डिफ़ॉल्ट दिखाने (English हमारे मामले में) भाषा उन पृष्ठों
<script>
var curAddr = document.location; //MISTAKE
var newAddr = curAddr.replace(new RegExp("/lng/[a-z]{2}-[A-Z]{2}", "gi"), "");
if (curAddr != newAddr)
document.location = newAddr;
</script>
लेकिन इस कोड काम नहीं कर रहा के लिए बजाय, की जगह समारोह सिर्फ अनिर्धारित (कोई अपवाद नहीं फेंक दिया) देता है तो यह कहने के लिए नेविगेट करने के लिए कोशिश करता है एक्स/lng/el-GR/url x पर जाने के बजाए अपरिभाषित। मोज़िला फ़ायरफ़ॉक्स के डीबगर (एफ 12 कुंजी) के साथ इसे जांचकर और कर्सर को curAddr चर पर ले जाना, यह URL के लिए कुछ सरल स्ट्रिंग मान के बजाय बहुत सारी जानकारी दिखा रहा था। उस पॉपअप से वॉचिंग का चयन करके आप घड़ी फलक में देख सकते थे, यह यूआरएल के लिए "..." के बजाय "स्थान -> ..." लिख रहा था। इससे मुझे एहसास हुआ कि यह एक ऑब्जेक्ट
एक अपवाद या कुछ फेंकने के लिए प्रतिस्थापित करने की अपेक्षा करता था, लेकिन अब मुझे लगता है कि समस्या यह थी कि वह कुछ गैर-मौजूदा "प्रतिस्थापन" विधि को कॉल करने की कोशिश कर रहा था यूआरएल ऑब्जेक्ट जो जावास्क्रिप्ट में बस "अपरिभाषित" वापस देता है।
उस मामले में सही कोड है:
<script>
var curAddr = document.location.href; //CORRECT
var newAddr = curAddr.replace(new RegExp("/lng/[a-z]{2}-[A-Z]{2}", "gi"), "");
if (curAddr != newAddr)
document.location = newAddr;
</script>
document.location एक वस्तु – ant
सब कुछ एक वस्तु है। मुझे लगता है कि आपका मतलब क्या है कि 'location.href' के विपरीत, यह एक साधारण स्ट्रिंग नहीं है। –
@Max Shawabkeh yes location.href एक स्ट्रिंग – ant