programing

자바스크립트로 현재 디렉터리 이름을 얻으려면 어떻게 해야 합니까?

megabox 2023. 9. 11. 21:35
반응형

자바스크립트로 현재 디렉터리 이름을 얻으려면 어떻게 해야 합니까?

파일의 현재 디렉터리를 자바스크립트로 가져오려고 하는데, 이를 이용하여 내 사이트의 각 섹션마다 다른 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은 브라우저의 내장 경로 해상도를 이용하는 것입니다.다음을 통해 이를 수행할 수 있습니다.

  1. 링크 만들기., 현재 디렉터리
  2. 링크의 인터페이스를 사용하여 다음과 같은 확인된 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

반응형