টি এল; ডিআর
1- বর্তমান ইউআরএল সংশোধন করতে এবং ইতিহাস তালিকায় নতুন ইউআরএল এন্ট্রি হিসাবে এটি (নতুন পরিবর্তিত ইউআরএল) যুক্ত / ইনজেক্ট করতে , ব্যবহার করুন :pushState
window.history.pushState({}, document.title, "/" + "my-new-url.html");
2- ইতিহাসের এন্ট্রিগুলিতে এটি যুক্ত না করে বর্তমান ইউআরএল প্রতিস্থাপন করতে :replaceState
window.history.replaceState({}, document.title, "/" + "my-new-url.html");
3- নির্ভর করে আপনার উপর ব্যবসা লজিক , pushStateযেমন ক্ষেত্রেই উপযোগী হতে হবে:
আপনি ব্রাউজারের পিছনের বোতামটি সমর্থন করতে চান
আপনি একটি নতুন ইউআরএল তৈরি করতে, ইতিহাসের এন্ট্রিগুলিতে নতুন ইউআরএল যুক্ত / সন্নিবেশ / পুশ করতে এবং এটি বর্তমান ইউআরএল তৈরি করতে চান
ব্যবহারকারীদের একই পরামিতিগুলির সাথে পৃষ্ঠাটি বুকমার্ক করতে দেয় (একই সামগ্রীগুলি দেখানোর জন্য)
অ্যাঙ্কর থেকে তদাতিরিক্ত পার্সের মাধ্যমে প্রোগ্রামগতভাবে ডেটা অ্যাক্সেস করতেstateObj
আমি যেমন আপনার মন্তব্য থেকে বুঝতে পেরেছি, আপনি আবার পুনর্নির্দেশ না করেই আপনার URL টি পরিষ্কার করতে চান।
মনে রাখবেন আপনি পুরো URL টি পরিবর্তন করতে পারবেন না। ডোমেনের নামের পরে যা আসে তা আপনি কেবল পরিবর্তন করতে পারেন। এর অর্থ হল যে আপনি পরিবর্তন করতে পারবেন না www.example.com/তবে আপনি যা করতে পারেন তা পরিবর্তন করতে পারবেন.com/
www.example.com/old-page-name => can become => www.example.com/myNewPaage20180322.php
পটভূমি
আমরা ব্যবহার করতে পারি:
1- পুশস্টেট () পদ্ধতিটি যদি আপনি ইতিহাসের এন্ট্রিগুলিতে একটি নতুন পরিবর্তিত URL যুক্ত করতে চান add
2- যদি আপনি বর্তমান ইতিহাসের এন্ট্রি আপডেট / প্রতিস্থাপন করতে চান তবে প্রতিস্থাপনের স্টেট () পদ্ধতিটি ।
.replaceState()নতুন ইতিহাস তৈরির পরিবর্তে বর্তমান ইতিহাসের এন্ট্রিটি সংশোধন করে.pushState() বাদে ঠিক .replaceState() তেমনভাবে কাজ করে । নোট করুন যে এটি বিশ্বব্যাপী ব্রাউজারের ইতিহাসে একটি নতুন এন্ট্রি তৈরির প্রতিরোধ করে না।
.replaceState()বিশেষত কার্যকর যখন আপনি কিছু ব্যবহারকারীর ক্রিয়া প্রতিক্রিয়া হিসাবে বর্তমান ইতিহাস প্রবেশের স্টেট অবজেক্ট বা URL আপডেট করতে চান ।
কোড
এটি করার জন্য আমি এই উদাহরণের জন্য পুশস্টেট () পদ্ধতিটি ব্যবহার করব যা নিম্নলিখিত ফর্ম্যাটের সাথে একইভাবে কাজ করে:
var myNewURL = "my-new-URL.php";//the new URL
window.history.pushState("object or string", "Title", "/" + myNewURL );
আপনার প্রয়োজনীয়তার উপর ভিত্তি করে pushStateসাথে প্রতিস্থাপন নির্দ্বিধায় replaceState।
আপনি প্যারামিটারের প্রতিস্থাপন করতে পারেন "object or string"সঙ্গে {}এবং "Title"সঙ্গে document.titleতাই চূড়ান্ত statment হয়ে যাবে:
window.history.pushState({}, document.title, "/" + myNewURL );
ফলাফল
আগের দুটি লাইনের কোড একটি ইউআরএল তৈরি করবে যেমন:
https://domain.tld/some/randome/url/which/will/be/deleted/
হতে:
https://domain.tld/my-new-url.php
কর্ম
এখন আসুন একটি ভিন্ন পদ্ধতির চেষ্টা করুন। বলুন আপনার ফাইলটির নাম রাখা দরকার। ফাইলের নামটি শেষের পরে /এবং ক্যোরি স্ট্রিংয়ের আগে আসে ?।
http://www.someDomain.com/really/long/address/keepThisLastOne.php?name=john
হবে:
http://www.someDomain.com/keepThisLastOne.php
এর মতো কিছু এটি কাজ করবে:
//fetch new URL
//refineURL() gives you the freedom to alter the URL string based on your needs.
var myNewURL = refineURL();
//here you pass the new URL extension you want to appear after the domains '/'. Note that the previous identifiers or "query string" will be replaced.
window.history.pushState("object or string", "Title", "/" + myNewURL );
//Helper function to extract the URL between the last '/' and before '?'
//If URL is www.example.com/one/two/file.php?user=55 this function will return 'file.php'
//pseudo code: edit to match your URL settings
function refineURL()
{
//get full URL
var currURL= window.location.href; //get current address
//Get the URL between what's after '/' and befor '?'
//1- get URL after'/'
var afterDomain= currURL.substring(currURL.lastIndexOf('/') + 1);
//2- get the part before '?'
var beforeQueryString= afterDomain.split("?")[0];
return beforeQueryString;
}
হালনাগাদ:
একটি লাইনার অনুরাগীর জন্য, আপনার কনসোল / ফায়ারব্যাগে এটি ব্যবহার করে দেখুন এবং এই পৃষ্ঠার ইউআরএল পরিবর্তিত হবে:
window.history.pushState("object or string", "Title", "/"+window.location.href.substring(window.location.href.lastIndexOf('/') + 1).split("?")[0]);
এই পৃষ্ঠার ইউআরএল থেকে পরিবর্তন হবে:
http://stackoverflow.com/questions/22753052/remove-url-parameters-without-refreshing-page/22753103#22753103
প্রতি
http://stackoverflow.com/22753103#22753103
দ্রষ্টব্য: স্যামুয়েল লিউ নীচের মন্তব্যে নির্দেশিত হিসাবে , এই বৈশিষ্ট্যটি কেবলমাত্র জন্য চালু করা হয়েছেHTML5 ।
বিকল্প পন্থাটি আসলে আপনার পৃষ্ঠাটিকে পুনর্নির্দেশ করা হবে (তবে আপনি কোয়েরি স্ট্রিং lose? 'হারাবেন, এটির কি এখনও প্রয়োজন আছে বা ডেটা প্রক্রিয়াজাত করা হয়েছে?)।
window.location.href = window.location.href.split("?")[0]; //"http://www.newurl.com";