Window.location.href और top.location.href के बीच अंतर


92

क्या कोई मुझे window.location.hrefऔर के बीच का अंतर बता सकता है top.location.href?

और यह भी कि किसका उपयोग करना है।

और कौन सा बेहतर होगा जब एमजेड में अजाक्स कॉल के बाद पुनर्निर्देशित किया जाए?


मैं यह उल्लेख करना भूल गया कि मुझे .net MVC में एक नए url को पुनर्निर्देशित करना था .. जब मैंने top.location.href का उपयोग किया था, जबकि window.location ने काम नहीं किया .. क्या आप इसका कारण भी बता सकते हैं ????
Egalitarian

जवाबों:


125

window.location.href वर्तमान पृष्ठ का स्थान लौटाता है।

top.location.href(जो एक अन्य नाम है window.top.location.href) खिड़की पदानुक्रम में सबसे ऊपरी खिड़की का स्थान देता है। यदि किसी विंडो में कोई अभिभावक नहीं है, topतो स्वयं का संदर्भ है (दूसरे शब्दों में, window=== window.top)।

topफ्रेम के साथ काम करते समय और अन्य पृष्ठों द्वारा खोली गई खिड़कियों के साथ काम करते समय दोनों उपयोगी है। उदाहरण के लिए, यदि आपके पास test.htmlनिम्नलिखित स्क्रिप्ट के साथ एक पृष्ठ है :

var newWin=window.open('about:blank','test','width=100,height=100');
newWin.document.write('<script>alert(top.location.href);</script>');

परिणामी अलर्ट में test.html का पूरा रास्ता होगा - के बारे में नहीं : रिक्त, जो है window.location.hrefवह वापस आ जाएगा।

पुनर्निर्देशन के बारे में आपके प्रश्न का उत्तर देने के लिए, साथ जाएं window.location.assign(url);


3
इसे कहते हैं सही है top.location.hrefएक उर्फ की window.top.location.href? मैंने सोचा था कि तथाकथित "वैश्विक" चर वास्तव में एक संपत्ति के लिए एक आशुलिपि है,window जबकि अन्य का तात्पर्य यह एक स्वतंत्र चर है जो उसी स्थान पर इंगित करता है।
just.another.programmer

25

topऑब्जेक्ट फ़्रेम के अंदर अधिक समझ में आता है। एक फ़्रेम के अंदर, windowवर्तमान फ़्रेम की विंडो को topसंदर्भित करता है जबकि बाहरी विंडो को संदर्भित करता है जिसमें फ़्रेम (s) शामिल हैं। इसलिए:

window.location.href = 'somepage.html';somepage.htmlफ्रेम के अंदर लोड करने का मतलब है ।

top.location.href = 'somepage.html';somepage.htmlमुख्य ब्राउज़र विंडो में लोड हो रहा है।

दो अन्य रोचक वस्तुएँ हैं selfऔर parent


9

topविंडो ऑब्जेक्ट को संदर्भित करता है जिसमें सभी वर्तमान फ्रेम (बाकी खिड़कियों के पिता) शामिल हैं। windowवर्तमान है window

http://www.howtocreate.co.uk/tutorials/javascript/browserinspecific

इसलिए top.location.hrefइसमें "मास्टर" पृष्ठ लिंक हो सकता है जिसमें सभी फ़्रेम शामिल हैं, जबकि window.location.hrefबस "वर्तमान" पृष्ठ लिंक शामिल है।


7

पहला वाला आपके इतिहास में एक आइटम जोड़ता है जिसमें आप "बैक" पर क्लिक कर सकते हैं (चालू कर सकते हैं) और वर्तमान पृष्ठ पर वापस जाएं।

दूसरा वर्तमान इतिहास आइटम को बदल देता है ताकि आप उस पर वापस न जा सकें।

देखें window.location:

  • assign(url): दिए गए URL पर दस्तावेज़ लोड करें।

  • replace(url): वर्तमान दस्तावेज़ को दिए गए URL पर एक के साथ बदलें। assign()विधि से अंतर यह है कि replace()वर्तमान पृष्ठ का उपयोग करने के बाद सत्र इतिहास में सहेजा नहीं जाएगा, जिसका अर्थ है कि उपयोगकर्ता उस पर नेविगेट करने के लिए बैक बटन का उपयोग करने में सक्षम नहीं होगा।

window.location.href = url;

पर इष्ट है:

window.location = url;

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