1. ホーム
  2. javascript

[解決済み] JavaScriptで相対パスを絶対パスに変換する

2023-05-27 05:31:31

質問

ある関数があり、それは以下のようなURLを表示します。

./some.css
./extra/some.css
../../lib/slider/slider.css

常に相対パスです。

ページの現在のパスがわかっているとします、例えば http://site.com/stats/2012/ のような相対パスを知っているとして、これらの相対パスを実際のものにどのように変換すればよいのでしょうか?

のようなものを取得する必要があります。

./some.css => http://site.com/stats/2012/some.css
./extra/some.css => http://site.com/stats/2012/extra/some.css
../../lib/slider/slider.css => http://site.com/lib/slider/slider.css

jQueryを使わず、バニラjavascriptのみ。

どのように解決するのですか?

これで解決するはずです。

function absolute(base, relative) {
    var stack = base.split("/"),
        parts = relative.split("/");
    stack.pop(); // remove current file name (or empty string)
                 // (omit if "base" is the current folder without trailing slash)
    for (var i=0; i<parts.length; i++) {
        if (parts[i] == ".")
            continue;
        if (parts[i] == "..")
            stack.pop();
        else
            stack.push(parts[i]);
    }
    return stack.join("/");
}