みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ホームディレクトリを示すチルダ(~)について悩んでいます。

ホームディレクトリを示すチルダ(~)について悩んでいます。

例えば、外部JavaScriptファイルを参照する時、
<script type="text/javascript" src="~/test1.js"></script>
とURLにチルダを含んでいても問題無く、ホームディレクトリの下にある
test1.jsファイルに参照できます。

これとは別に、window.open ("~/aaa.htm"); と記述し、
ホームディレクトリ下にある"aaa.htm"のページへリンクするようにしたいのですが、
実際に実行するとリンク先のURLが"http://xxxxxx/yyyyy/~aaa.htm"になってしまいます。


チルダ文字がURLの一部と認識されてしまっているようなのですが、
チルダをURLの一部ではなく、ホームディレクトリを参照するようにしたいのですが、
どのようにすれば宜しいのでしょうか?

投稿日時 - 2010-05-12 19:53:53

QNo.5890585

困ってます

質問者が選んだベストアンサー

的はずれかもしれませんが

「http:での『ホームディレクトリ』ってどこ?」

file:だったら、ブラウザを起動したユーザーのホームディレクトリだと予想できます。
(もしかして 「外部JavaScriptファイルを参照する時…問題無く」というのはローカルファイルでの確認時ではないですか?)

が、http:だと、httpサーバーの所有者ってことにならないでしょうか?

~ユーザー名にしても、http上での位置であって、実際のファイルシステム上の位置とは限りません。
httpサーバーがユーザー名と結び付けているだけです。~aaa が ユーザーbbbと結び付いているかもしれません。


あるいは。
「ブラウザのURL解析エンジンと、JavascriptのURL解析エンジンの挙動が違う」
というのも考えられます。最近のブラウザでは高速化のため、Javascript専用のエンジンを使ってるケースもあるので。

投稿日時 - 2010-05-13 10:15:31

お礼

わかり易い解説ありがとうございました。

投稿日時 - 2010-05-19 19:39:36

ANo.4

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

ホームディレクトリというのがどこなのかわかりませんが、
HTMLファイルのあるディレクトリから相対URL、絶対パス、絶対URLのいずれかで指定して下さい。

http://xxxxxx/yyyyy/index.html
から相対URLでaaa.htmでしたらhttp://xxxxxx/yyyyy/aaa.htmですし、
http://xxxxxx/index.htmlから相対URLでaaa.htmでしたらhttp://xxxxxx/aaa.htmになります。

/yyyyy/aaa.htm
このように絶対パスで指定すると
参照元がどこであろうとhttp://xxxxxx/yyyyy/aaa.htmを指定したことになります。

http://xxxxxx/yyyyy/aaa.htm
このように絶対URLで指定すると、参照元のパス、ドメインにかかわらずhttp://xxxxxx/yyyyy/aaa.htmを指定したことになります。


> 例えば、外部JavaScriptファイルを参照する時、
> <script type="text/javascript" src="~/test1.js"></script>
> とURLにチルダを含んでいても問題無く、ホームディレクトリの下にある
> test1.jsファイルに参照できます。
こういう設定の仕方(~というディレクトリを参照した場合はパス指定に何らかの変更を加える)は聞いたことがありません。
サーバーの管理者に特殊な設定がされてないか、問い合わせてみて下さい。

投稿日時 - 2010-05-13 03:54:38

お礼

わかりづらいサンプル(URL)を記載したにもかかわらず、
わかりやすく解説していただいて、ありがとうございました。

ちなみにサーバ側の設定ですが、開発機であるWinXP(IIS5.5)と
実用機であるWinServer2008(IIS6.0)で特別な設定は施していません。
"~/test1.js"という参照で正常に動いております。

投稿日時 - 2010-05-19 19:44:35

ANo.2

サイトのデータは通常(~/aaa.htm)で無く(index.htm)を起点として構築します。
ですからaaa.htmがindex.htmと同じ場所に有るのでこのコードは(window.open ("aaa.htm"); でOK
チルダは普通("http://xxxxxx/yyyyy/~ユーザ名/index.html)と言う場合に使用します。
上記の記載は絶対アドレス表記です。

投稿日時 - 2010-05-12 20:39:33

補足

アドバイスありがとうございます。
おかげさまで、window.open ("aaa.htm"); は理解できました。

ただ、チルダは http://xxxxxx/yyyyy/~ユーザ名/index.html という場合に
使えるのであれば、外部のJavaScriptファイルに参照する
<script type="text/javascript" src="~/test1.js"></script> も
使えないはずなのでは?という疑問が残ってしまってます。

この理由について何かご存知であれば、ご教授の程宜しくお願い致します。

投稿日時 - 2010-05-13 00:02:22

ANo.1

だめもとで、
window.open ("%7E/aaa.htm");

投稿日時 - 2010-05-12 20:16:27

お礼

アドバイスありがとうございます。
私の方でも"だめもと"でやったのですが、
やっぱりだめでした。

投稿日時 - 2010-05-13 00:03:21

あなたにオススメの質問