আমার মতো ইউআরএল রয়েছে: পৃষ্ঠাটি রিফ্রেশ http://example.com#something
না করে আমি কীভাবে সরিয়ে ফেলব #something
?
আমি নিম্নলিখিত সমাধানটি চেষ্টা করেছি:
window.location.hash = '';
তবে #
এটি ইউআরএল থেকে হ্যাশ প্রতীক সরিয়ে দেয় না ।
আমার মতো ইউআরএল রয়েছে: পৃষ্ঠাটি রিফ্রেশ http://example.com#something
না করে আমি কীভাবে সরিয়ে ফেলব #something
?
আমি নিম্নলিখিত সমাধানটি চেষ্টা করেছি:
window.location.hash = '';
তবে #
এটি ইউআরএল থেকে হ্যাশ প্রতীক সরিয়ে দেয় না ।
উত্তর:
প্রাথমিক প্রশ্ন:
window.location.href.substr(0, window.location.href.indexOf('#'))
অথবা
window.location.href.split('#')[0]
উভয়ই হ্যাশ বা এর পরে কিছু না করে URL ফিরিয়ে দেবে।
আপনার সম্পাদনার সাথে:
যে কোনও পরিবর্তন window.location
একটি পৃষ্ঠা রিফ্রেশকে ট্রিগার করবে। আপনি window.location.hash
রিফ্রেশটি ট্রিগার না করেই পরিবর্তন করতে পারবেন (যদিও আপনার হ্যাশ পৃষ্ঠায় কোনও আইডির সাথে মিললে উইন্ডোটি লাফিয়ে উঠবে) তবে আপনি হ্যাশ চিহ্নটি থেকে মুক্তি পেতে পারবেন না। আপনার বাছাই করুন যার জন্য আরও খারাপ ...
সর্বাধিক উত্তর-তারিখের উত্তর
কোরবানি না দিয়ে কীভাবে এটি করা যায় তার সঠিক উত্তর (হয় পুরো পুনরায় লোড করুন বা হ্যাশ চিহ্নটি সেখানে রেখেই হবে) এখানে নীচে । ২০০৯ সালে আসলটি হ'ল যদিও এই উত্তরটি এখানে রেখে দিচ্ছেন যেখানে নতুন ব্রাউজারের এপিআইগুলির সঠিক উত্তরটি 1.5 বছর পরে দেওয়া হয়েছিল।
এই সমস্যা সমাধান করা আজকাল নাগালের মধ্যে অনেক বেশি। HTML5 এর ইতিহাস এপিআই আমাদের বর্তমান ডোমেনের মধ্যে কোনো URL প্রদর্শন করে অবস্থান দণ্ডের নিপূণভাবে করতে পারবেন।
function removeHash () {
history.pushState("", document.title, window.location.pathname
+ window.location.search);
}
কার্যকারিতা ডেমো: http://jsfiddle.net/AndyE/ycmPt/ শো /
এটি ক্রোম 9, ফায়ারফক্স 4, সাফারি 5, অপেরা 11.50 এবং আইই 10 তে কাজ করে uns
function removeHash () {
var scrollV, scrollH, loc = window.location;
if ("pushState" in history)
history.pushState("", document.title, loc.pathname + loc.search);
else {
// Prevent scrolling by storing the page's current scroll offset
scrollV = document.body.scrollTop;
scrollH = document.body.scrollLeft;
loc.hash = "";
// Restore the scroll offset, should be flicker free
document.body.scrollTop = scrollV;
document.body.scrollLeft = scrollH;
}
}
সুতরাং আপনি হ্যাশ প্রতীকটি থেকে মুক্তি পেতে পারেন, কেবলমাত্র সমস্ত ব্রাউজারেই নয় - এখনও।
দ্রষ্টব্য: আপনি যদি ব্রাউজারের ইতিহাসে বর্তমান পৃষ্ঠাটি প্রতিস্থাপন করতে চান তবে replaceState()
পরিবর্তে ব্যবহার করুন pushState()
।
(অনেকগুলি উত্তর অপ্রয়োজনীয় এবং পুরানো)) এখন সেরা সমাধানটি হ'ল:
history.replaceState(null, null, ' ');
history.pushState(null, null, ' ')
পরিবর্তে যদি আপনি ইতিহাস সংরক্ষণ করতে চান তবে ব্যবহার করুন।
null
জন্য state
এবং title
পরামিতি পরিণামে আছে।
সহজ এবং মার্জিত:
history.replaceState({}, document.title, "."); // replace / with . to keep url
.
পরিবর্তে ব্যবহার করতে দয়া করে @vahanpwns নোট হিসাবে উত্তর আপডেট করুন /
। ইউআরএলকে /
মূল পথে পরিবর্তন করে ব্যবহার করে ।
history.replaceState({}, document.title, location.href.substr(0, location.href.length-location.hash.length));
আমার ব্যবহারের ক্ষেত্রে পরিবর্তন করেছি।
history.replaceState(null, document.title, location.pathname + location.search);
হ্যাশ অপসারণ করতে, আপনি এই ফাংশনটি ব্যবহার করে দেখতে পারেন
function remove_hash_from_url()
{
var uri = window.location.toString();
if (uri.indexOf("#") > 0) {
var clean_uri = uri.substring(0, uri.indexOf("#"));
window.history.replaceState({}, document.title, clean_uri);
}
}
এটি পাশাপাশি চলমান হ্যাশও সরিয়ে ফেলবে। উদাহরণস্বরূপ: http://test.com/123#abc -> http://test.com/123
if(window.history.pushState) {
window.history.pushState('', '/', window.location.pathname)
} else {
window.location.hash = '';
}
নিম্নলিখিত সম্পর্কে কীভাবে?
window.location.hash=' '
দয়া করে নোট করুন যে হ্যাশটি একটি একক স্থানে সেট করছে এবং খালি স্ট্রিং নয়।
একটি অকার্যকর অ্যাঙ্কারে হ্যাশ সেট করাও রিফ্রেশের কারণ নয়। যেমন,
window.location.hash='invalidtag'
তবে, আমি বিভ্রান্তিকর হতে উপরের সমাধানটি খুঁজে পাই। এটি সূচিত করে মনে হয় যে প্রদত্ত নামের সাথে প্রদত্ত অবস্থানে একটি অ্যাঙ্কর রয়েছে যদিও একটি নেই। একই সময়ে, একটি খালি স্ট্রিং ব্যবহারের ফলে পৃষ্ঠা শীর্ষে চলে যায় যা সময়ে সময়ে অগ্রহণযোগ্য হতে পারে। একটি স্থান ব্যবহার করাও নিশ্চিত করে যে যখনই ইউআরএল অনুলিপি করা হয় এবং বুকমার্ক করা হয় এবং আবার দেখা হয়, পৃষ্ঠাটি সাধারণত শীর্ষে থাকবে এবং স্থানটিকে উপেক্ষা করা হবে।
এবং ওহে স্ট্যাক ওভারফ্লোতে এটি আমার প্রথম উত্তর। আশা করি কেউ এটিকে দরকারী বলে মনে করেন এবং এটি সম্প্রদায়ে মানগুলির সাথে মেলে।
const url = new URL(window.location);
url.hash = '';
history.replaceState(null, document.title, url);
<script type="text/javascript">
var uri = window.location.toString();
if (uri.indexOf("?") > 0) {
var clean_uri = uri.substring(0, uri.indexOf("?"));
window.history.replaceState({}, document.title, clean_uri);
}
</script>
মাথা বিভাগে এই কোড রাখুন
function removeLocationHash(){
var noHashURL = window.location.href.replace(/#.*$/, '');
window.history.replaceState('', document.title, noHashURL)
}
window.addEventListener("load", function(){
removeLocationHash();
});
আমি মনে করি, এটি আরও নিরাপদ হবে
if (window.history) {
window.history.pushState('', document.title, window.location.href.replace(window.location.hash, ''));
} else {
window.location.hash = '';
}
নিম্নলিখিত চেষ্টা করুন:
window.history.back(1);
এখানে href ব্যবহার করে অবস্থান পরিবর্তন করার এবং স্ক্রোলিং ছাড়াই হ্যাশ সাফ করার আরও একটি সমাধান রয়েছে।
যাদু সমাধান এখানে ব্যাখ্যা করা হয় । চশমা এখানে ।
const hash = window.location.hash;
history.scrollRestoration = 'manual';
window.location.href = hash;
history.pushState('', document.title, window.location.pathname);
দ্রষ্টব্য: প্রস্তাবিত এপিআই এখন হোয়াটডব্লিউজি এইচটিএমএল লিভিং স্ট্যান্ডার্ডের অংশ
$(window).on('hashchange', function (e) {
history.replaceState("", document.title, e.originalEvent.oldURL);
});
আপনি নাল দিয়ে হ্যাশ প্রতিস্থাপন করতে পারেন
var urlWithoutHash = document.location.href.replace(location.hash , "" );