मैं वर्तमान URL को कैसे बदल सकता हूं?


100

मेरे पास निम्नलिखित कोड है जो जावास्क्रिप्ट के भीतर के पृष्ठों को बदलता है:

var newUrl = [some code to build up URL string];
window.location.replace(newUrl);

लेकिन यह शीर्ष URL को परिवर्तित नहीं करता है, इसलिए जब कोई बैक बटन क्लिक करता है तो वह पिछले पृष्ठ पर वापस नहीं जाता है।

मेरे पास जावास्क्रिप्ट कैसे बदल सकता है शीर्ष URL और साथ ही ब्राउज़र बैक बटन काम करता है।

जवाबों:



38

सरल window.locationया window.location.hrefठीक होना चाहिए:

window.location = newUrl;

हालाँकि, आपका नया URL ब्राउज़र को नए पृष्ठ को लोड करने का कारण बनेगा, लेकिन ऐसा लगता है कि आप वर्तमान पृष्ठ को छोड़ कर URL को संशोधित करना चाहेंगे। इसके लिए आपके पास दो विकल्प हैं:

  1. URL हैश का उपयोग करें। उदाहरण के लिए, आप से जा सकते हैं example.comकरने के लिए example.com#fooएक नया पृष्ठ लोड किए बिना। आप बस window.location.hashइसे आसान बनाने के लिए सेट कर सकते हैं । फिर, आपको एचटीएमएल 5 hashchangeइवेंट को सुनना चाहिए , जो उपयोगकर्ता द्वारा बैक बटन दबाने पर निकाल दिया जाएगा। यह IE के पुराने संस्करणों में समर्थित नहीं है, लेकिन jQuery BBQ की जाँच करें , जो सभी ब्राउज़रों में यह काम करता है।

  2. आप पृष्ठ को पुनः लोड किए बिना पथ को संशोधित करने के लिए HTML5 इतिहास का उपयोग कर सकते हैं। यह आपको से बदलने के लिए अनुमति देगा example.com/fooकरने के लिए example.com/bar। इसका उपयोग करना आसान है:

    window.history.pushState("example.com/foo");

    जब उपयोगकर्ता "वापस" दबाता है, तो आपको विंडो की popstateघटना प्राप्त होगी , जिसे आप आसानी से सुन सकते हैं (jQuery):

    $(window).bind("popstate", function(e) { alert("location changed"); });

    दुर्भाग्य से, यह केवल क्रोम, सफारी और फ़ायरफ़ॉक्स 4 बीटा जैसे बहुत ही आधुनिक ब्राउज़रों में समर्थित है।


स्ट्रिंग्स पर .replace विधि उस स्ट्रिंग को नहीं बदलेगी जिस पर इसे लागू किया गया था, यह एक नई स्ट्रिंग उत्पन्न करेगा। " - window.location.replace()विधि विधि के समान नहीं है String.prototype.replace()क्योंकि window.locationस्ट्रिंग नहीं है (यह एक ऑब्जेक्ट है) window.location.replace()वर्तमान को बदल देता है । इतिहास में पुराने URL के प्रवेश को अधिलेखित करते हुए एक नए के साथ URL।
एंडी ई

1
सुधार के लिए धन्यवाद, मैं तदनुसार अपना उत्तर अपडेट करूंगा।
bcherry

2
पीछे मुड़कर देखें, तो यह सबसे अच्छा जवाब है। document.location.href में
पुशस्टैट

7

हम्म, मैं का उपयोग करेगा

window.location = 'http://localhost/index.html#?options=go_here';

मैं बिल्कुल यकीन नहीं कर रहा हूँ कि अगर तुम क्या मतलब है।


7

यदि आप केवल सापेक्ष पथ को अपडेट करना चाहते हैं तो आप भी कर सकते हैं

window.location.pathname = '/relative-link'

"http://domain.com" -> "http://domain.com/relative-link"


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