2010-08-20 13 views
140

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

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

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

उत्तर

221
document.referrer 

कई मामलों में आप सीधे पता पट्टी में टाइप बनाम अंतिम पृष्ठ उपयोगकर्ता, का दौरा किया अगर वे एक लिंक पर क्लिक करके वर्तमान पृष्ठ से मिल गया का URL मिल जाएगा (या मेरा मानना ​​है कि कुछ मामलों में एक फॉर्म जमा करके?)। DOM Level 2 द्वारा निर्दिष्ट। More here.

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

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

+4

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

+1

यह हमेशा काम नहीं करता है। अर्थात। iframes। –

+0

धन्यवाद, जोड़ा गया नोट पुनः: document.referrer। –

18
document.referrer 

यह एक मानक है, यह यूआरएल देगा जिस से आपने देखा है।

0

document.referrer पिछले पृष्ठ यूआरएल देगा लेकिन यह ओपेरा, मोज़िला फ़ायरफ़ॉक्स, सफारी आदि जैसे सभी ब्राउज़रों के लिए काम करेगा, लेकिन इंटरनेट एक्सप्लोरर में काम नहीं करता है। जब आप IE में उस document.referrer का उपयोग करते हैं तो यह नतीजा होगा।

+4

आईई के लिए बिल्कुल सही नहीं है! –

+0

मेरे लिए आईई 9 में काम करता है – frodo2975

14

document.referrer सभी स्थितियों में वास्तविक यूआरएल जैसा नहीं है।

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

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

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

9

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

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. 

लेकिन आपको लगता है कि एचटीएमएल 5 इतिहास एपीआई

का समर्थन नहीं करता अधिक जानकारी के लिए ब्राउज़र पर इतिहास ढेर की सामग्री में हेरफेर नहीं कर सकते हैं doc

संबंधित मुद्दे