হ্যাশ ছাড়াই বা URL টি পুনরায় লোড না করে নতুন বারের সাথে ঠিকানা বার আপডেট করা


643

আমি ক্রোম (ডেভ চ্যানেল) পৃষ্ঠাটি পুনরায় লোড না করে জাভাস্ক্রিপ্ট (পথ, ডোমেন নয়) এর মাধ্যমে ঠিকানা বার আপডেট করার কোনও উপায় বাস্তবায়নের স্বপ্ন দেখেছি বা তারা সত্যিই এটি করেছে done

যাইহোক, আমি যে নিবন্ধটি আমার মনে হয় সেগুলি খুঁজে পাচ্ছি না ।

আমি কি পাগল নাকি এটি করার কোনও উপায় আছে (ক্রোমে)?

PS আমি উইন্ডো.লোকেশন.হ্যাশ, ইত্যাদি সম্পর্কে কথা বলছি না। উপরের বিদ্যমান থাকলে এই প্রশ্নের উত্তর অসত্য হবে।



1
@ tobiaskienzler যখন প্রশ্নটি মূলত ২০০৯ সালে ফিরে জিজ্ঞাসা করা হয়েছিল, তখন তা সম্ভব হয়নি।
ডেভিড মুরডোক

3
অবশ্যই না. কিন্তু এখন এটি, প্রশ্নগুলির জন্য একই জিজ্ঞাসা। লজ্জাজনক হলেও অন্যটির একটি পুরানো উত্তর গৃহীত হয়েছে (আপনার দ্বারা আমি লক্ষ্য করেছি) ... আপনি কী জানেন? আসুন অন্য পথে ঘুরে দেখি, কেউই বলেনি যে "মূল "টিকে সবচেয়ে বেশি বয়সী হতে হবে, বাস্তবে এর নজির রয়েছে
টোবিয়াস কেইনজলার

@ টোবিয়াস্কিয়েনজার, অন্য প্রশ্নের পুরানো স্বীকৃত উত্তর নেই।
ডেভিড মুরডোক

2
@ তোবিয়াস কিইনজলার এটি 6 বছরের পুরানো প্রশ্ন, আপনি কেন এই প্রশ্নটি নিয়ে বিরক্ত হবেন? কেবল আশ্চর্যজনক উত্তর উপভোগ করুন এবং এটি আপনার প্রয়োগে প্রয়োগ করুন। 6 বছরের জন্য হাজার হাজার এসও ব্যবহারকারী সম্মত হয়েছেন যে এটি একটি আশ্চর্যজনক প্রশ্ন, দয়া করে এটি যেমনটি ছেড়ে দিন।
ইমাম আসিদ্দিকী

উত্তর:


874

আপনি এখন বেশিরভাগ "আধুনিক" ব্রাউজারে এটি করতে পারেন!

এখানে আমি পড়লাম মূল নিবন্ধটি (10 জুলাই, 2010 পোস্ট করা): এইচটিএমএল 5: রিফ্রেশ পৃষ্ঠা ছাড়াই ব্রাউজার-ইউআরএল পরিবর্তন করা

পুডস্টেট / রিপ্লেসস্টেট / পপস্টেটে আরও গভীরভাবে দেখার জন্য (এইচটিএমএল 5 ইতিহাস এপিআই) এমডিএন ডক্স দেখুন

টিএল; ডিআর, আপনি এটি করতে পারেন:

window.history.pushState("object or string", "Title", "/new-url");

কীভাবে করা যায় তার জন্য পৃষ্ঠাটি পুনরায় লোড না করে URL টি সংশোধন করার জন্য আমার উত্তর দেখুন ।


3
আহ, কার্যকারিতাটি ওয়েবকিটে রয়েছে এবং কয়েক মাস আগে < বাগস.ওয়েবকিট.আর / শো_বগ । ভাল লাগছে!
oldestlivingboy

6
এটি এখন গিথুব দ্বারা ব্যবহৃত হয়, যখন গাছের নেভিগেশন
ভ্যালারিজ

1
@ ভিপ্রিম্যাচেনকো: হ্যাঁ। এবং তারা একবারে একবারে আমার পিছনের বোতামটি ভেঙে দেয়।
ডেভিড মারডোক

এটি এখন ক্রোম, সাফারি, এফএফ 4 + এবং আই 10 পিপি 3 + এ করা যেতে পারে! (ডেভিড মারডকের উত্তর থেকে stackoverflow.com/questions/824349/... )
জ্যাক Lysobey

11
Protip: আপনি হিসাবে ভাল (যেমন এই ফাংশন সঙ্গে আপেক্ষিক পাথ ব্যবহার করতে পারেন ../new-urlবা ../../new-urlতারা অন্তত Chrome এ আশা কি করতে বলে মনে
Mahn

156

পুরানো ব্রাউজারগুলি - হ্যাশের পরে কী পরিবর্তন করা হচ্ছে

document.location.hash = 'lookAtMeNow';

সম্পূর্ণ ইউআরএল পরিবর্তন করা হচ্ছে। ক্রোম, ফায়ারফক্স, আই 10 +

history.pushState('data to be passed', 'Title of the page', '/test');

উপরের ইতিহাসে একটি নতুন এন্ট্রি যুক্ত করবে যাতে আপনি আগের অবস্থায় যেতে ব্যাক বোতাম টিপতে পারেন। ইতিহাস ব্যবহারে নতুন এন্ট্রি যুক্ত না করে জায়গায় URL টি পরিবর্তন করতে

history.replaceState('data to be passed', 'Title of the page', '/test');

এগুলি এখন কনসোলে চালানোর চেষ্টা করুন!


13
replaceStateআসল প্রতিক্রিয়াটি প্রসারণ করার জন্য ধন্যবাদ আমার দরকার ছিল।
কোয়েলটন বি। হিগগিনবটম

'ডোমেন এবং প্রোটোকল অবশ্যই মূল হিসাবে একই হতে হবে!' এটি কিছু ফিশিং সাইটকে অ্যাড্রেস বারের url পরিবর্তন করতে বাধা দেয় prevent
রিক

3
আপনি এই ফাংশন একটি নিখুঁত URL পাস করা উচিত নয়। যদি আপনি এটি করেন তবে আপনার সম্ভবত সম্ভবত এটি বর্তমান স্কিম, হোস্ট এবং পোর্ট থেকে গতিশীলভাবে তৈরি করা দরকার - এটি যখন আপনি কেবল এটির আপেক্ষিক ইউআরএল ("foo.html" বা "/foo.html" তৈরি করতে পারেন তখন অনেক কাজ হয় ") এবং ব্রাউজারটিকে এটির যত্ন নিতে দিন।
ডাইমক্যাডমিয়াম

1
@ ডিমাইক্যাডমিয়াম সুন্দর সরলকরণ ification আপডেট করা হয়েছে।
পাভেল

history.replaceStateff 66.0b1-এ ইতিহাসে যুক্ত করুন
আজমসা

33

এমনকি পুডস্টেট সমর্থন করে না এমন ব্রাউজারগুলি সনাক্ত করার জন্য ডেভিডগুলিতে উত্তর আপডেট করুন:

if (history.pushState) {
  window.history.pushState("object or string", "Title", "/new-url");
} else {
  document.location.href = "/new-url";
}

9
ডকুমেন্ট.লোকেশন.আরেফ পৃষ্ঠাটি পুনরায় লোড করে
জুলাই'৯৯ এ পলব্লম্ব

1
var newurl = window.location.protocol + "//" + window.location.host + window.location.pathname + '?foo=bar';
window.history.pushState({path:newurl},'',newurl);

3
যদিও এই কোড স্নিপেট একটি ব্যাখ্যা সহ প্রশ্নটি সমাধান করতে পারে, সত্যিই আপনার পোস্টের মান উন্নত করতে সহায়তা করে। মনে রাখবেন যে আপনি ভবিষ্যতে পাঠকদের জন্য প্রশ্নের উত্তর দিচ্ছেন, এবং সেই লোকেরা আপনার কোড পরামর্শের কারণগুলি জানেন না।
ম্যাক্সিমাউস

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