আমি কীভাবে বর্তমান ইউআরএল পরিবর্তন করতে পারি?


101

আমার কাছে নিম্নলিখিত কোড রয়েছে যা জাভাস্ক্রিপ্টের মধ্যে থেকে পৃষ্ঠাগুলি পরিবর্তন করে:

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

তবে এটি শীর্ষস্থানীয় ইউআরএল পরিবর্তন করে না, তাই কেউ যখন পিছনের বোতামটি ক্লিক করে এটি আগের পৃষ্ঠায় ফিরে যায় না।

আমি কীভাবে জাভাস্ক্রিপ্টের শীর্ষস্থানীয় ইউআরএল পরিবর্তন করতে পারি তাই ব্রাউজারের পিছনের বোতামটি কাজ করে।

উত্তর:



41

সহজ বরাদ্দ করা window.locationবা window.location.hrefজরিমানা করা উচিত:

window.location = newUrl;

তবে, আপনার নতুন ইউআরএল ব্রাউজারটিকে নতুন পৃষ্ঠাটি লোড করবে, তবে মনে হচ্ছে আপনি বর্তমান পৃষ্ঠাটি না রেখেই URL টি পরিবর্তন করতে চান। এর জন্য আপনার কাছে দুটি বিকল্প রয়েছে:

  1. ইউআরএল হ্যাশ ব্যবহার করুন। উদাহরণস্বরূপ, যদি আপনি থেকে যেতে পারেন example.comকরার example.com#fooএকটি নতুন পৃষ্ঠা লোড ছাড়াই। window.location.hashএটিকে সহজ করার জন্য আপনি কেবল সেট করতে পারেন। তারপরে, আপনার এইচটিএমএল 5 hashchangeইভেন্টটি শোনা উচিত , যখন ব্যবহারকারী পিছনের বোতামটি টিপবে তখন তা বহিস্কার করা হবে। এটি আইই এর পুরানো সংস্করণগুলিতে সমর্থিত নয়, তবে jQuery বিবিকিউ দেখুন , যা সমস্ত ব্রাউজারে এই কাজটি করে।

  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 বিটা এর মতো খুব আধুনিক ব্রাউজারগুলিতে সমর্থিত।


স্ট্রিংয়ের .replaces পদ্ধতিটি যে স্ট্রিংটি প্রয়োগ করা হয়েছিল সেটিকে পরিবর্তন করবে না, এটি একটি নতুন স্ট্রিং উত্পন্ন করবে "" - window.location.replace()পদ্ধতিটি পদ্ধতির মতো নয় String.prototype.replace()কারণ window.locationস্ট্রিং নয় (এটি একটি বস্তু) window.location.replace()current বর্তমানকে প্রতিস্থাপন করে ইতিহাসে পুরাতন ইউআরএল প্রবেশের উপরে ওভাররাইট করে একটি নতুন সহ ইউআরএল
অ্যান্ডি ই

4
সংশোধনের জন্য ধন্যবাদ, আমি সেই অনুযায়ী আমার উত্তর আপডেট করব।
বাচারি

4
পিছনে তাকানো, এটি এখন পর্যন্ত সেরা উত্তর। 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"


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