質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

4回答

3825閲覧

現在の階層からルート階層までのパスを取得したい

erp

総合スコア46

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/10/30 11:57

前提・実現したいこと

CSSファイルを後から読み込ませるために、現在地からルート階層までのパスを取得し、共通jsで読み込ませるファイルのurlを指定したい。

発生している問題・エラーメッセージ

現在地からルート階層までのパスを取得するjavascriptが分からない。調べてもヒットしなかった。

該当のソースコード

javascript

1requestAnimationFrame(function(l){l=document.createElement('link'); 2 l.rel='stylesheet';l.href= + 'small.css';document.head.appendChild(l)})

このソースを使って、small.cssの前に「../../../」を書きたいと思います。「../../../」を

HTML

1<link rel="stylesheet" href="../../../assets/css/style.css">

から取得したいです。どうすれば取得できますか?

試したこと

「javascript ルートパス 取得」で調べましたが見つかりませんでした。

Firefox最新、safari604.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/10/31 02:06

なぜそうする必要があるのか前提や背景を記載してください。
kei344

2020/11/01 04:43

xamppを使っているのになぜパスの書き換えをする必要があるのでしょう。
erp

2020/11/01 04:54

xamppで絶対パスを使う方法を色々試したのですが、何故か使えなかったためです。ホストの書き換え、サーバーの登録など一通り試しました。 現時点で絶対パスのファイルは読み込まれていません。
m.ts10806

2020/11/01 06:04

XAMPPならPHP側で絶対パスとれますが。(ブラウザから参照できないけど)
miyabi_takatsuk

2020/11/01 08:24

> xamppで絶対パスを使う方法を色々試したのですが PHPなど、サーバーサイドからは、 絶対パスの取得はできますが。 とにかく、何をどうしたいか、 を明確にして下さい。 それを明確にすれば、質問者さんがやろうとしている方法より、有効な手段の回答が出てくるかもしれません。 今の質問状態では、質問者さんがなんでそのような事をしたいのかが意味不明です。
guest

回答4

0

自己解決

ファイルのパスがそもそも間違っていました。ルート相対パスでxamppで表示できました。よく分かっていなくてすみません。

投稿2020/11/03 10:34

erp

総合スコア46

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

location

コード値(GC)値(Fx)
location.hreffile:///D:/test.htmlfile:///D:/test.html
location.pathname/D:/test.html/D:/test.html

参考。

HTML

HTML

1<a href="/">root(/)</a> 2<a href="/D:/">/D:/</a>
href属性値絶対URI(GC)絶対URI(Fx)
/file:///D:/file:///
/D:/file:///D:/file:///D:/

結論

location.pathname から正規表現を使用して、**/D:/もしくはfile:///D:/**を取得して下さい。

Re: erp さん

投稿2020/11/01 05:27

編集2020/11/01 05:35
think49

総合スコア18189

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

質問に対する解ではありませんが、
コメントのやりとりを見て、なぜそれをやろうとしているかの理由がわかりましたので、
その事に関しての回答になります。

USBメモリにWebサイトのデータファイルを入れて先方に確認してもらう、に関して

非常に非効率な上、逆に危険と言える手法です。
15年以上前でさえ、この手法は廃れていたと言えます。
今すぐそのやり方はやめましょう。

ソフトウェア案件ならばまだ有効かもしれない

パッケージ化したソフトウェアならば、今でもそういった渡し方をする案件もあるかもしれません。(CDに焼いたり)
しかし、いずれにせよ、Webサイト案件でやるのは愚の骨頂です。

ではどうするか

サーバーにアップロードして見せるべきです。
自身が仕事で使っているサーバーの、サブドメインを作成し、
そこにサイトのデータをアップロード、
Basic認証をかけるなどで、通常アクセスでは閲覧できないようになどすれば、
パブリックではありますが、パスワードなどを知らない人間では見れない状態を作れます。
先方に、閲覧に必要なIDとパスワードを教えればいいでしょう。
そうすれば、最終納品のソースコードも変えずに済みます。
また、検索にインデックスされるのが懸念があるなら(Basic認証かけた時点でインデックスされませんが)、
metaにインデックスさせないためのコードを埋め込む方法もあります。
(その場合は、コードは変わってしまうが)
他にもロボットにインデックスさせない方法はあります。

いずれにせよ、USBでデータをいちいち渡してローカルで確認してもらうなんてことは、
正直やったら恥ずかしいレベルで、何もわかってないと思われても仕方ないので、
テストサーバーにアップロードして見てもらう方法に変えるべきです。

投稿2020/10/31 17:04

miyabi_takatsuk

総合スコア9555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

erp

2020/10/31 21:16

すみません、クライアント案件ではないです。 個人で使っているPCがいつお陀仏してもいい状態なので、USBで済ませようとしています。
hentaiman

2020/10/31 23:43

それならグーグルドライブマウントして同期したフォルダで作れば良いんじゃないかね・・・
hentaiman

2020/10/31 23:57

↑は質問者が中学生高校生かなと思ってのコメントなので、もしそれよりも上なら働いて新しいパソコン買いましょう
think49

2020/11/01 02:46

@erp さん > 個人で使っているPCがいつお陀仏してもいい状態なので、USBで済ませようとしています。 USBメモリをバックアップとして使えばいいのでは。 USBメモリだけに保存した場合、USBメモリがお陀仏になった時にデータを失いますよ。
erp

2020/11/01 04:37

Googleドライブを使うとルート階層にxamppを置けないので(C:¥Users¥×××¥Googleドライブ)出来ません。 メモリの紛失は懸念材料ですが、仕方ないと思います。
think49

2020/11/01 05:10

紛失ではなく、故障もあります。 PCのデータ消失を懸念して、USBメモリは懸念されないのに違和感を覚えます…。
guest

0

直接ルートからのパス /assets/css/style.css を指定するのは駄目なのでしょうか。
どうしても相対パスにする必要があるのでしょうか。

投稿2020/10/30 13:17

plasticgrammer

総合スコア629

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

erp

2020/10/30 13:56

こんばんは。ローカルでルート相対パスを見られる環境構築が出来ない事情があり(USB内にフォルダを入れているため)、ルート相対パスだと見られません。 そのため、相対パスに変換する必要があるのです。 USBないのファイルもXAMPPで確認できる方法があればいいのですが……。
miyabi_takatsuk

2020/10/30 15:35

USBで渡す必要がある状況ということですか? ご自身のレンタルサーバーなどに、アップロードして、それを見てもらう、だといけないのでしょうか?
erp

2020/10/30 19:00

そうですね、USBで済ませたいです。サーバーに上げる前にデザインの確認などをローカルで行いたいので、困っています。 XAMPPをUSB内に構築する方法があるそうなのてそちらを試してみようかと思います。 ですが、相対パスを取得する方法があれば知りたいです。、
plasticgrammer

2020/10/30 23:58

実際に試してみないと何ともですが、window.location.pathnameのスラッシュの数(ローカルだと¥になったりするかも)で判断できないでしょうか。 ( window.location.pathname.match(/[¥/]/g) || [] ).length
miyabi_takatsuk

2020/10/31 16:45

なんにせよ、あまり有効な方法とも言えませんので、 サブドメインを作成などで、 アップロードし、 Basic認証をかける、検索にインデックスさせない処理をし、 オンラインで先方に見せるべきです。 USBでファイルを渡すのは、 最終のソースコードと変えねばならない、など、あまりにも非効率なデータの見せ方です。
hentaiman

2020/10/31 17:09

相対パスで書いてUSBで渡すのに何の問題があるのか分からない
erp

2020/10/31 21:13

すみません、語弊があったというか勘違いを助長させてしまった様なのですが、クライアント案件ではないです。 個人で使っているPCがいつお陀仏してもいい状態なので、USBに環境構築をしたいのです。 そこで相対パスが必要になってきます。 そして ( window.location.pathname.match(/[¥/]/g) || [] ).length で個数を取得した後、「../」その個数分書くにはどうすれば良いのでしょうか……。
think49

2020/11/01 02:59

> ローカルでルート相対パスを見られる環境構築が出来ない事情があり(USB内にフォルダを入れているため)、 少なくとも、Google Chromeでは file:// でも「絶対パス」を使えましたが、動作環境は何でしょう?
erp

2020/11/01 04:39

ローカルで絶対パスを見ているのはFirefoxです。今のところChromeに移行するつもりはありません。
think49

2020/11/01 05:38

Firefoxでもローカルで絶対パスは使えました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問