जावास्क्रिप्ट में पिछला URL कैसे प्राप्त करें?


230

क्या जावास्क्रिप्ट में पिछला URL प्राप्त करने का कोई तरीका है? कुछ इस तरह:

alert("previous url is: " + window.history.previous.href);

क्या ऐसा कुछ है? या मुझे इसे सिर्फ कुकी में स्टोर करना चाहिए? मुझे केवल यह जानने की जरूरत है कि मैं पिछले URL से वर्तमान URL के लिए बिना एंकर और उन सभी के लिए संक्रमण कर सकता हूं।

जवाबों:


351
document.referrer

कई मामलों में, यदि आप किसी लिंक पर क्लिक करके (वर्तमान पता बार में सीधे टाइप कर रहे हैं, या मुझे कुछ मामलों में विश्वास है, तो फ़ॉर्म सबमिट करके) अंतिम पृष्ठ का URL आपको मिलेगा। DOM स्तर 2 द्वारा निर्दिष्ट । यहां अधिक।

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

यदि आप अपनी स्वयं की साइट पर घूम रहे राज्य के साथ काम कर रहे हैं, तो संभवत: यह कम नाजुक है और सामान्य सत्र प्रबंधन तकनीकों में से एक का उपयोग करने के लिए निश्चित रूप से अधिक उपयोगी है: कुकी डेटा, URL परम या सर्वर साइड सत्र जानकारी।


4
वहाँ भी है। यदि आप एक लिंक के माध्यम से वर्तमान पृष्ठ पर पहुंचे (लेकिन नहीं, उदाहरण के लिए, बुकमार्क बार या पता बार में टाइप करके)।
नरक

68
मैंने साइट के लिए कुकीज़ में पिछले url को संग्रहीत करने का document.referrerकाम किया , हमेशा काम नहीं करता। $.cookie("previousUrl", window.location.href, {path:"/"});
लांस पोलार्ड

4
आप सर ने मुझे जावास्क्रिप्ट दर्द की दुनिया से बचाया है!
अन्ना लाम

8
पिछला रेफर नहीं है। उन्हें भ्रमित न करें
ग्रीन

1
document.referrer पिछले url से hashes को नहीं बचाता है ... यह केवल अंतिम url को दर्शाता है।
Nmaster88

29

यदि आप url को जाने बिना पिछले पृष्ठ पर जाना चाहते हैं, तो आप नए इतिहास एपीआई का उपयोग कर सकते हैं।

history.back(); //Go to the previous page
history.forward(); //Go to the next page in the stack
history.go(index); //Where index could be 1, -1, 56, etc.

लेकिन आप उस ब्राउज़र पर इतिहास स्टैक की सामग्री में हेरफेर नहीं कर सकते जो HTML5 इतिहास एपीआई का समर्थन नहीं करता है

अधिक जानकारी के लिए डॉक्टर को देखें


2
इसे url, href = '' के साथ कैसे करें?
summu

@summu यह ब्राउज़र में ही संग्रहीत है
अहमद ताहा

20

document.referrer सभी स्थितियों में वास्तविक URL के समान नहीं है।

मेरे पास एक एप्लिकेशन है जहां मुझे 2 फ़्रेम के साथ एक फ़्रेमसेट स्थापित करने की आवश्यकता है। एक फ्रेम ज्ञात है, दूसरा वह पृष्ठ है जिससे मैं लिंक कर रहा हूं। ऐसा लगता है कि document.referrerयह आदर्श होगा क्योंकि आपको वास्तविक फ़ाइल नाम को फ़्रेमसेट दस्तावेज़ में पारित नहीं करना होगा।

हालाँकि, यदि आप बाद में नीचे के फ्रेम पेज को बदलते हैं और फिर इसका उपयोग history.back()करते हैं, तो यह मूल पृष्ठ को निचले फ्रेम में लोड नहीं करता है, इसके बजाय यह पुनः लोड होता है document.referrerऔर परिणामस्वरूप फ्रेमसेट चला जाता है और आप मूल शुरुआती विंडो पर वापस आ जाते हैं।

यह समझने में मुझे थोड़ा समय लगा। तो इतिहास सरणी में, document.referrerन केवल एक URL है, यह स्पष्ट रूप से रेफरल विंडो विनिर्देश भी है। कम से कम, इस समय मैं इसे समझ सकता हूं सबसे अच्छा तरीका है।


मेरे नवीनतम परीक्षण 'document.referrer' के रूप में, अब केवल डोमेन नाम लौटाएँ और ट्रैकिंग से बचने के लिए पूर्ण URL नहीं।
आकाश कुमार सेठ

12

यदि आप एक वेब ऐप या सिंगल पेज एप्लिकेशन (एसपीए) लिख रहे हैं, जहां सर्वर के लिए एक राउंड-ट्रिप के बजाय ऐप / ब्राउज़र में रूटिंग होती है, तो आप निम्न कार्य कर सकते हैं:

window.history.pushState({ prevUrl: window.location.href }, null, "/new/path/in/your/app")

फिर, अपने नए मार्ग में, आप पिछले URL को पुनः प्राप्त करने के लिए निम्न कार्य कर सकते हैं:

window.history.state.prevUrl // your previous url

0

Node.js और Express का उपयोग करने वाले आप सत्र कुकी को सेट कर सकते हैं, जो वर्तमान पृष्ठ URL को याद रखेगी, इस प्रकार आपको अगले पृष्ठ लोड पर रेफ़रर की जाँच करने की अनुमति देती है। यहां एक उदाहरण दिया गया है जो express-sessionमिडलवेयर का उपयोग करता है :

//Add me after the express-session middleware    
app.use((req, res, next) => {
    req.session.referrer = req.protocol + '://' + req.get('host') + req.originalUrl;
    next();
});

फिर आप रेफरी कुकी की मौजूदगी की जाँच कर सकते हैं जैसे:

if ( req.session.referrer ) console.log(req.session.referrer);

यह मत मानिए कि एक रेफरी कुकी हमेशा इस पद्धति के साथ मौजूद होती है क्योंकि यह ऐसे उदाहरणों पर उपलब्ध नहीं होगी जहां पिछला URL एक अन्य वेबसाइट था, सत्र को साफ किया गया था या बस (पहली बार वेबसाइट लोड) बनाया गया था।


0
<script type="text/javascript">
    document.write(document.referrer);
</script>

document.referrer आपके उद्देश्य को पूरा करता है, लेकिन यह IE9 की तुलना में इंटरनेट एक्सप्लोरर संस्करणों के लिए काम नहीं करता है।

यह अन्य लोकप्रिय ब्राउज़रों के लिए काम करेगा, जैसे क्रोम, मोज़िला, ओपेरा, सफारी आदि।


IE 9 में मेरे लिए काम करता है
frodo2975

-8

यह पहले देखे गए URL पर नेविगेट करेगा।

javascript:history.go(-1)

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