アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

例えば、外部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の一部ではなく、ホームディレクトリを参照するようにしたいのですが、
どのようにすれば宜しいのでしょうか?

A 回答 (4件)

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



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

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

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

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


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

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

お礼日時:2010/05/19 19:39

ホームディレクトリというのがどこなのかわかりませんが、


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ファイルに参照できます。
こういう設定の仕方(~というディレクトリを参照した場合はパス指定に何らかの変更を加える)は聞いたことがありません。
サーバーの管理者に特殊な設定がされてないか、問い合わせてみて下さい。
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2010/05/19 19:44

サイトのデータは通常(~/aaa.htm)で無く(index.htm)を起点として構築します。


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

この回答への補足

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

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

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

補足日時:2010/05/13 00:02
    • good
    • 0

だめもとで、


window.open ("%7E/aaa.htm");
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/05/13 00:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!