मेरे पास URL है जैसे: पृष्ठ को ताज़ा किए बिना http://example.com#something
मैं कैसे #something
हटाऊं?
मैंने निम्नलिखित समाधान का प्रयास किया:
window.location.hash = '';
हालाँकि, यह #
URL से हैश प्रतीक को नहीं हटाता है ।
मेरे पास URL है जैसे: पृष्ठ को ताज़ा किए बिना http://example.com#something
मैं कैसे #something
हटाऊं?
मैंने निम्नलिखित समाधान का प्रयास किया:
window.location.hash = '';
हालाँकि, यह #
URL से हैश प्रतीक को नहीं हटाता है ।
जवाबों:
प्रारंभिक प्रश्न:
window.location.href.substr(0, window.location.href.indexOf('#'))
या
window.location.href.split('#')[0]
दोनों हैश या इसके बाद कुछ भी बिना यूआरएल वापस कर देंगे।
आपके संपादन के संबंध में:
किसी भी परिवर्तन से window.location
पृष्ठ ताज़ा हो जाएगा। आप window.location.hash
रिफ्रेश को ट्रिगर किए बिना बदल सकते हैं (हालांकि विंडो कूद जाएगी यदि आपका हैश पेज पर आईडी से मेल खाता है), लेकिन आप हैश साइन से छुटकारा नहीं पा सकते हैं। अपना ले लो जिसके लिए बदतर है ...
सबसे ऊपर दिनांक तिथि उत्तर
यज्ञ के बिना इसे करने का सही उत्तर (या तो पूर्ण पुनः लोड करना या वहां हैश साइन को छोड़ना) नीचे है । हालांकि 2009 में मूल एक होने के संबंध में इस जवाब को छोड़ते हुए जबकि नए ब्राउज़र एपीआई का लाभ उठाने वाला सही 1.5 साल बाद दिया गया था।
इस समस्या का समाधान आजकल पहुंच के भीतर बहुत अधिक है। एचटीएमएल 5 इतिहास एपीआई हमें वर्तमान डोमेन के भीतर किसी भी URL दिखाने के लिए स्थान पट्टी में हेरफेर करने की अनुमति देता है।
function removeHash () {
history.pushState("", document.title, window.location.pathname
+ window.location.search);
}
वर्किंग डेमो: http://jsfiddle.net/AndyE/ycmPt/show/
यह क्रोम 9, फ़ायरफ़ॉक्स 4, सफारी 5, ओपेरा 11.50 और आईई 10. में काम करता है । असमर्थित ब्राउज़रों के लिए, आप हमेशा एक सुंदर अपमानजनक स्क्रिप्ट लिख सकते हैं, जो इसका उपयोग करता है जहां उपलब्ध है:
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'
लेकिन, मैं भ्रामक होने के लिए उपरोक्त समाधान ढूंढता हूं। यह इंगित करने के लिए प्रतीत होता है कि दिए गए नाम के साथ दिए गए स्थान पर एक लंगर है, हालांकि एक नहीं है। उसी समय, खाली स्ट्रिंग का उपयोग करने से पृष्ठ शीर्ष पर चला जाता है जो कई बार अस्वीकार्य हो सकता है। एक स्थान का उपयोग करना यह भी सुनिश्चित करता है कि जब भी URL को कॉपी और बुकमार्क किया जाए और फिर से देखा जाए, तो पृष्ठ आमतौर पर सबसे ऊपर होगा और अंतरिक्ष को नजरअंदाज कर दिया जाएगा।
और, हे, StackOverflow पर यह मेरा पहला जवाब है। आशा है कि कोई इसे उपयोगी पाता है और यह सामुदायिक मानकों से मेल खाता है।
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);
नोट: प्रस्तावित API अब व्हाट्सएप HTML लिविंग स्टैंडर्ड का हिस्सा है
$(window).on('hashchange', function (e) {
history.replaceState("", document.title, e.originalEvent.oldURL);
});
आप हैश को नल के साथ बदल सकते हैं
var urlWithoutHash = document.location.href.replace(location.hash , "" );