কীভাবে জাভাস্ক্রিপ্টে পূর্ববর্তী ইউআরএল পাবেন?


230

জাভাস্ক্রিপ্টে পূর্ববর্তী ইউআরএল পাওয়ার কোনও উপায় আছে কি? এটার মতো কিছু:

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

এরকম কিছু আছে কি? বা আমি কি কেবল এটি একটি কুকিতে সংরক্ষণ করব? আমার কেবল জানতে হবে যাতে আমি পূর্ববর্তী ইউআরএল থেকে বর্তমান ইউআরএলে অ্যাঙ্করগুলি এবং এগুলি ছাড়া সমস্ত স্থানান্তর করতে পারি।

উত্তর:


350
document.referrer

ব্যবহারকারীরা কোনও লিঙ্কে ক্লিক করে বর্তমান পৃষ্ঠায় পৌঁছে যদি বেশিরভাগ ক্ষেত্রে ব্যবহারকারীদের শেষ পৃষ্ঠার URL টি পেয়ে যায় তবে (সরাসরি ঠিকানা বারে টাইপ করা বনাম, অথবা আমি কোনও ফর্ম জমা দিয়ে কিছু ক্ষেত্রে বিশ্বাস করি?)। ডিওএম স্তর 2 দ্বারা নির্দিষ্ট করা । আরও এখানে।

window.historyসুরক্ষা এবং গোপনীয়তার কারণে অধিবেশনগুলিতে নেভিগেশনকে অনুমতি দেয় তবে সেশনে ইউআরএলগুলিতে অ্যাক্সেস না। যদি আরও বিশদ ইউআরএল ইতিহাস পাওয়া যায়, তবে আপনি যে সাইটটি পরিদর্শন করেছেন তা প্রতিটি সাইট আপনার অন্য সমস্ত সাইটগুলিতে দেখতে পারে।

যদি আপনি নিজের সাইটের চারপাশে স্থিতিশীল পরিস্থিতি মোকাবিলা করছেন, তবে এটি সম্ভবত কম ভঙ্গুর এবং স্বাভাবিক সেশন ম্যানেজমেন্ট কৌশলগুলির মধ্যে একটি: কুকি ডেটা, ইউআরএল প্যারাম বা সার্ভার সাইড সেশন তথ্য ব্যবহার করার জন্য সম্ভবত আরও কার্যকর।


4
এখানে ডকুমেন্ট.আরফেরারও রয়েছে, যদি আপনি কোনও লিঙ্কের মাধ্যমে বর্তমান পৃষ্ঠায় পৌঁছে থাকেন (তবে উদাহরণস্বরূপ, বুকমার্ক বা ঠিকানা বারে টাইপ করে)।
Hellian

68
আমি সাইটের জন্য কুকিজে পূর্ববর্তী ইউআরএল সংরক্ষণ করেছি, document.referrerসবসময় কাজ করে না। $.cookie("previousUrl", window.location.href, {path:"/"});
ল্যান্স পোলার্ড

4
আপনি স্যার আমাকে জাভাস্ক্রিপ্ট ব্যথার দুনিয়া থেকে বাঁচিয়েছেন!
আনা লাম

8
পূর্ববর্তীটি রেফার নয়। তাদের গুলিয়ে ফেলবেন না
সবুজ

1
ডকুমেন্ট.রেফারার শেষ ইউআরএল থেকে হ্যাশগুলি সংরক্ষণ করে না ... এটি কেবল সর্বশেষ ইউআরএলকে বোঝায়।
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.

আপনি এইচটিএমএল 5 ইতিহাস এপিআই সমর্থন করে না এমন ব্রাউজারে ইতিহাস স্ট্যাকের সামগ্রীটি পরিচালনা করতে পারবেন না

আরও তথ্যের জন্য ডকটি দেখুন


2
ইউআরএল জেনে এটি কীভাবে করবেন, href = ''?
Summu

@ সুম্মু এটি ব্রাউজারেই সংরক্ষিত রয়েছে
আহমেদ তাহা

20

document.referrer সমস্ত পরিস্থিতিতে প্রকৃত URL হিসাবে এক নয় as

আমার একটি অ্যাপ্লিকেশন রয়েছে যেখানে আমার 2 ফ্রেম সহ একটি ফ্রেমসেট স্থাপন করতে হবে। একটি ফ্রেম পরিচিত, অন্যটি পৃষ্ঠাটি যা থেকে আমি লিঙ্ক করছি। এটি document.referrerআদর্শ হবে বলে মনে হয় কারণ আপনাকে প্রকৃত ফাইলের নাম ফ্রেমসেট ডকুমেন্টে দিতে হবে না।

তবে, আপনি যদি পরে নীচের ফ্রেম পৃষ্ঠাটি পরিবর্তন করেন এবং তারপরে history.back()এটি ব্যবহার করেন তবে এটি মূল পৃষ্ঠাটি নীচের ফ্রেমে লোড করে না, পরিবর্তে এটি পুনরায় লোড হয় document.referrerএবং ফলস্বরূপ ফ্রেমসেটটি চলে যায় এবং আপনি মূল প্রারম্ভিক উইন্ডোতে ফিরে আসেন।

এটা বুঝতে আমাকে কিছুক্ষণ সময় লাগল। সুতরাং ইতিহাসের অ্যারেতে document.referrerকেবল একটি ইউআরএলই নয় এটি স্পষ্টতই রেফারার উইন্ডোতেও রয়েছে। অন্ততপক্ষে, এই মুহূর্তে আমি এটি বুঝতে পারি এটি সর্বোত্তম উপায়।


আমার সর্বশেষ পরীক্ষার হিসাবে 'ডকুমেন্ট.আরফেরার' এখন স্রেফ ডোমেনের নাম ফিরে আসে এবং ট্র্যাকিং এড়ানোর জন্য পুরো URL না।
আকাশ কুমার শেঠ

12

আপনি যদি কোনও ওয়েব অ্যাপ্লিকেশন বা একক পৃষ্ঠার অ্যাপ্লিকেশন (এসপিএ) লিখতে থাকেন যেখানে সার্ভারে রাউন্ড ট্রিপের পরিবর্তে অ্যাপ / ব্রাউজারে রাউটিং হয়, আপনি নিম্নলিখিতটি করতে পারেন:

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

তারপরে, আপনার নতুন রুটে, আপনি পূর্ববর্তী ইউআরএলটি পুনরুদ্ধার করতে নিম্নলিখিতগুলি করতে পারেন:

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

0

আপনারা যারা নোড.জেএস এবং এক্সপ্রেস ব্যবহার করছেন তারা একটি সেশন কুকি সেট করতে পারেন যা বর্তমান পৃষ্ঠার ইউআরএলটি মনে রাখবে, এভাবে আপনাকে পরবর্তী পৃষ্ঠার লোডে রেফারারটি পরীক্ষা করতে দেয়। 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);

ধরে নেবেন না যে একটি রেফারার কুকি সর্বদা এই পদ্ধতির সাথে বিদ্যমান কারণ এটি পূর্ববর্তী ইউআরএল অন্য কোনও ওয়েবসাইট ছিল এমন উদাহরণগুলিতে উপলভ্য হবে না, সেশনটি পরিষ্কার করা হয়েছিল বা সবে তৈরি হয়েছিল (প্রথমবারের ওয়েবসাইটের লোড)।


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

document.referrer আপনার উদ্দেশ্যটি পরিবেশন করে, তবে এটি ইন্টারনেট এক্সপ্লোরার সংস্করণগুলির জন্য IE9 এর আগে কাজ করে না।

এটি অন্যান্য জনপ্রিয় ব্রাউজারগুলির জন্য যেমন ক্রোম, মজিলা, অপেরা, সাফারি ইত্যাদির জন্য কাজ করবে


আমার জন্য আইই 9 তে কাজ করে
frodo2975

-8

এটি পূর্বে পরিদর্শন করা ইউআরএল নেভিগেট করবে।

javascript:history.go(-1)

1
ওপি পূর্ববর্তী ইউআরএলটিতে কীভাবে কীভাবে যাবেন, কীভাবে যাবেন না জানতে চেয়েছিলেন
ম্যাট জেনসেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.