답변:
이 시도: window.location.href.split('?')[0]
#
용어 ). 정규식을 사용하거나 여러 .split () 함수를 사용해야합니다.이 시점에서 URL을 정리할 때 "간단한"답변이라는 값을 잃었습니다. 이것은 기술적으로 질문의 범위를 벗어 났지만 여전히 관련이 있다고 말하고 싶습니다.
에 대해 읽어 Window.location
과 Location
인터페이스 :
var url = [location.protocol, '//', location.host, location.pathname].join('');
${location.protocol}//${location.host}${location.pathname}
pathname
수 선도적 인 드롭 /
(IE 11까지?) . 아, IE, 항상 눈송이예요?
location.toString().replace(location.search, "")
location.href.replace(location.search, '')
var url = window.location.origin + window.location.pathname;
해시도 제거하려면 다음을 시도하십시오. window.location.href.split(/[?#]/)[0]
URL () 인터페이스를 사용하는 접근 방식은 다음과 같습니다 .
new URL(location.pathname, location.href).href
쿼리를 제외한 URL의 모든 부분을 가져 오려면 :
var url = (location.origin).concat(location.pathname).concat(location.hash);
여기에 해시도 포함되어 있습니다 (예제 URL에 해시가 없다는 것을 알고 있지만 완전성을 위해 해당 측면을 포함했습니다). 해시를 제거하려면 간단히 제외하십시오 .concat(location.hash)
.
concat
Javascript 문자열을 함께 묶는 데 사용 하는 것이 좋습니다 (대신 +
) : 경우에 따라 유형 혼동과 같은 문제를 피할 수 있습니다.
의 속성 사용 window.location
var loc = window.location;
var withoutQuery = loc.hostname + loc.pathname;
var includingProtocol = loc.protocol + "//" + loc.hostname + loc.pathname;
https://developer.mozilla.org/en/DOM/window.location 에서 더 많은 속성을 볼 수 있습니다
JS의 $ (document) .ready에 다음 두 줄을 추가하십시오.
$(document).ready(function () {
$("div.sidebar nav a").removeClass("active");
$('nav a[href$="'+ window.location.pathname.split("?")[0] +'"]').addClass('active');
});
달러 기호 ($)를 사용하는 것이 좋습니다 (끝으로)
$('nav a[href$
(^) 대신 (로 시작)
$('nav a[href^
(^) 기호를 사용하고 탐색 메뉴에 중첩 된 URL이있는 경우 (예 : "/ account"및 "/ account / roles")
둘 다 활성화됩니다.
dot net core 3.1을 사용 하는 경우 대소 문자 무시 경로를 지원 하므로 rout이 작은 문자이고 사용자가 대문자로 rout을 쓰는 경우 이전 방법은 도움이되지 않습니다.
따라서 다음 코드는 매우 유용합니다.
$(document).ready(function () {
$("div.sidebar nav a").removeClass("active");
var urlPath = window.location.pathname.split("?")[0];
var nav = $('div.sidebar nav a').filter(function () {
return $(this).attr('href').toLowerCase().indexOf(urlPath.toLocaleLowerCase()) > -1;
});
$(nav).each(function () {
if ($(this).attr("href").toLowerCase() == urlPath.toLocaleLowerCase())
$(this).addClass('active');
});
});