자바스크립트로 현재 디렉터리 이름을 얻으려면 어떻게 해야 합니까?
파일의 현재 디렉터리를 자바스크립트로 가져오려고 하는데, 이를 이용하여 내 사이트의 각 섹션마다 다른 jquery 기능을 트리거할 수 있습니다.
if (current_directory) = "example" {
var activeicon = ".icon_one span";
};
elseif (current_directory) = "example2" {
var activeicon = ".icon_two span";
};
else {
var activeicon = ".icon_default span";
};
$(activeicon).show();
...
무슨 생각 있어요?
window.location.pathname은 페이지 이름뿐만 아니라 디렉토리도 제공합니다.그런 다음 .substring()을 사용하여 디렉토리를 가져올 수 있습니다.
var loc = window.location.pathname;
var dir = loc.substring(0, loc.lastIndexOf('/'));
Node.js에서는 다음을 사용할 수 있습니다.
console.log('Current directory: ' + process.cwd());
사용가능window.location.pathname.split('/');
그러면 /'s 사이에 있는 모든 항목이 있는 배열이 생성됩니다.
완전 URL
예를 들어 전체 URL을 원하는 경우http://website/basedirectory/workingdirectory/
용도:
var location = window.location.href;
var directoryPath = location.substring(0, location.lastIndexOf("/")+1);
로컬 패스
도메인이 없는 로컬 경로를 원하는 경우(예:/basedirectory/workingdirectory/
용도:
var location = window.location.pathname;
var directoryPath = location.substring(0, location.lastIndexOf("/")+1);
마지막에 슬래시가 필요 없을 경우에는 제거합니다.+1
끝나고location.lastIndexOf("/")+1
.
디렉토리명
스크립트가 실행 중인 현재 디렉토리 이름만 원하는 경우(예:workingdirectory
용도:
var location = window.location.pathname;
var path = location.substring(0, location.lastIndexOf("/"));
var directoryName = path.substring(path.lastIndexOf("/")+1);
URL 문자열을 말하는 것이 아니라면 파일 시스템의 실제 경로에서 사용할 수 있습니다.
var path = document.location.pathname;
var directory = path.substring(path.indexOf('/'), path.lastIndexOf('/'));
/ 및 \ 모두에 대해:
window.location.pathname.replace(/[^\\\/]*$/, '');
후행 슬래시 없이 되돌리려면 다음 작업을 수행합니다.
window.location.pathname.replace(/[\\\/][^\\\/]*$/, '');
이 원라이너는 다음과 같이 작동합니다.
var currentDirectory = window.location.pathname.split('/').slice(0, -1).join('/')
흥미로운 접근 방식을 통해 다음과 같은 이점을 얻을 수 있습니다.dirname
현재 URL은 브라우저의 내장 경로 해상도를 이용하는 것입니다.다음을 통해 이를 수행할 수 있습니다.
- 링크 만들기
.
, 현재 디렉터리 - 링크의 인터페이스를 사용하여 다음과 같은 확인된 URL 또는 경로를 가져옵니다.
.
.
다음은 바로 다음과 같은 기능을 하는 코드 라인입니다.
Object.assign(document.createElement('a'), {href: '.'}).pathname
여기에 제시된 다른 해결책들과는 달리, 이 방법의 결과는 항상 후행 슬래시가 있을 것입니다. 예를 들어, 이 페이지에서 실행하면 결과가 나옵니다./questions/3151436/
, 실행하기https://stackoverflow.com/
양보할 것/
.
경로 대신 전체 URL을 쉽게 얻을 수도 있습니다.그냥 읽어보세요.href
대신 재산pathname
.
마지막으로, 만약 당신이 사용하지 않는다면, 이 접근법은 심지어 가장 오래된 브라우저에서도 작동해야 합니다.Object.assign
:
function getCurrentDir () {
var link = document.createElement('a');
link.href = '.';
return link.pathname;
}
예를 들어 전체 URL을 원하는 경우website.com/workingdirectory/
용도:window.location.hostname+window.location.pathname.replace(/[^\\\/]*$/, '');
window.location.pathname
이 방법은 표준 URL 개체를 사용하여 현재 페이지의 URL을 찾을 수 있습니다.상대 경로 및 절대 경로를 사용하여 새 URL을 만드는 데 적합
url = window.location
console.log(url);
//strip pagename from pathname
currentdir = new URL(url.pathname.replace( /[^\/]*$/, ''), url.origin);
//now make new paths relative to currentdir
console.log(new URL("/dir1/dir2/hello.html", currentdir));
console.log(new URL("../../dir1/dir2/hello.html", currentdir));
console.log(new URL("../dir1/dir2/hello.html", currentdir));
console.log(new URL("./dir1/dir2/hello.html", currentdir));
console.log(new URL("dir1/dir2/hello.html", currentdir));
currentdir.port = 1234;
console.log(new URL("dir1/dir2/hello.html", currentdir));
현재 페이지가 다음과 같다고 가정하면 현재 출력이 예상됩니다.
https://interactive-examples.mdn.mozilla.net/pages/js/string-replace.html
https://interactive-examples.mdn.mozilla.net/pages/js/string-replace.html
"currentdir = https://interactive-examples.mdn.mozilla.net/pages/js/"
https://interactive-examples.mdn.mozilla.net/dir1/dir2/hello.html
https://interactive-examples.mdn.mozilla.net/dir1/dir2/hello.html
https://interactive-examples.mdn.mozilla.net/pages/dir1/dir2/hello.html
https://interactive-examples.mdn.mozilla.net/pages/js/dir1/dir2/hello.html
https://interactive-examples.mdn.mozilla.net/pages/js/dir1/dir2/hello.html
https://interactive-examples.mdn.mozilla.net:1234/pages/js/dir1/dir2/hello.html
Deno에서는 다음을 사용할 수 있습니다.
const currentWorkingDirectory = Deno.cwd();
console.log(currentWorkingDirectory);
Node.js에서는 다음을 사용할 수 있습니다.
const currentWorkingDirectory = process.cwd();
console.log(currentWorkingDirectory);
브라우저 클라이언트 코드에서 다음을 사용할 수 있습니다.
const pathname = location.pathname;
console.log(pathname);
//Beware that the pathname might not correspond to a file
//The `|| 1` handles the case when pathname is just "/", making it return "/"
const assumedDirectory = pathname.substring(0, (pathname.lastIndexOf("/") || 1));
console.log(assumedDirectory);
추신:
Deno & Node.js에서 코드가 모두 작동하도록 하려면 다음과 같은 작업을 수행할 수 있습니다.
function cwd() {
try {
return process.cwd();
}
catch (error) {
if (error instanceof ReferenceError) {
return Deno.cwd();
}
else {
throw error;
}
}
}
// Or otherwise just:
((typeof process === "object") ? process : Deno).cwd();
언급URL : https://stackoverflow.com/questions/3151436/how-can-i-get-the-current-directory-name-in-javascript
'programing' 카테고리의 다른 글
모든 쿼리 문자열 이름/값 쌍을 컬렉션으로 가져올 수 있는 방법이 있습니까? (0) | 2023.09.11 |
---|---|
Android: 알림 표시줄에서 알림 제거 (0) | 2023.09.11 |
JAXB: 목록에 있는 물체들을 어떻게 모아야 합니까? (0) | 2023.09.11 |
HQL에서 SQL로의 번역을 이해할 수 없습니다. (0) | 2023.09.11 |
역할 구독자를 가진 사용자를 가져오기 위한 SQL 쿼리 (0) | 2023.09.11 |