天使と悪魔選手権

DreamweaverMX2004のビヘイビアでマウスオーバー処理を使いたいために画像先読み機能をつけると、ヘッダにスクリプトが、また、bodyタグが
<body onLoad="MM_preloadImages('img/aaa.gif','img/bbb.gif')">
と、自動的に書き換えられます。

読み込む画像が多くなると、bodyタグの中身が長くなるし、多岐に渡るページで同じスクリプトを使用したいので
<body onLoad="Gazou()">
のようにして、JSファイルにまとめたいと思います。
JSファイルは「JS」というフォルダに「script.js」という名称で保存するとして、script.jsの中で画像のパスの書き方で困っています。

script.jsを基準にしたパスで書くのか、呼び出されるhtmlファイルを基準にパスを書くのか、です。
どちらなのでしょうか?

A 回答 (5件)

>script.jsを基準にしたパスで書くのか、


>呼び出されるhtmlファイルを基準にパスを書くのか、です。
>どちらなのでしょうか?

呼び出されるhtmlファイルを基準にパスを書くのが正しいです。
というか、正しくは JavaScript自身が動く場所を基準にパスを書くという事で、
ほとんどの場合が HTML で読み込んだその場で動くからです。
稀に他の場所で動くように仕掛ける事がありますから、
知識としては動く場所が基準と知っておくべきで。
まぁ通常は HTML ファイルを基準と考えて問題ないですが。


で、ついでなのですが、
JavaScript という事はブラウザが読み込んでブラウザが解釈して動くので、
サーバにアップしなくてもパソコンに置いても動作します。
というか、サーバからパソコンなどに読み込まれて
少なくともメモリには展開されて動作しています。
(キャッシュに残る場合はそちらにも書き出されますが。)
なので、出来る限りパソコンなどローカルな環境で動作確認はしましょう。
#1の補足にある様な光ケーブル云々を気にするのは
サーバの問題だけにしましょう。
(権限問題や本当にサーバに対象がアップされているかとか、CGIの動作などなど・・・)


それから、#4の方が提示されている
>「/aaa/bbb/ccc.gif」
この方法はブラウザの解釈が異なるので避けるべきです。
フラウザによって、ルートから解釈したりカレントから解釈したりと(どちらでもないよくわからないブラウザもあり)
(CGIなど環境が特定されている場合に用いるのは良いのですが・・・)

汎用性を考え容易な方法は、
絶対アドレスで指定する事でしょう。
そうでなければ、
ファルダの深さを表す共通変数を用意して
どの深さから呼んでいるか明示するか、
自分のURLを解釈してフォルダの深度を求める処理を用意するかなど
手間を掛ける事です。
    • good
    • 0

jsファイルといってもHTMLの中に埋め込まれることには変わりありません。

つまり「HTMLファイルから見たパス」になります。
「呼び出されるhtmlファイル」ではなく「呼び出すHTMLファイル」が基準ですね。

ちなみに、他ディレクトリにある画像などを参照するとき、外部スクリプトファイル内にて相対パスで書くと、それを他位置のHTMLに埋め込んだときに使えなくなることがあるので、ルートからのパス http://www.xxx.com/aaa/bbb/ccc.gif なら「/aaa/bbb/ccc.gif」と書いておくことで、すべてのファイルから使えるようになります。あるいはjamslotさんのおっしゃるように絶対パスが無難かもしれません。

余計なことかもしれませんが、ttyp03さんのおっしゃるように、まずは自分で試すなり、質問の前に少しの努力はするようにしましょう。
    • good
    • 0

htmlファイルを基準でよかったと思いますよ。


私もindex.html内にjsフォルダ内のjsファイルを埋め込んでます。同じ状況ですよね?
私はそれで問題なく動いておりますので!

それでも心配ならば、絶対パスで記述されてはどうでしょうか?これが多分一番確実ですよね~。

ご参考になれば幸いです!
    • good
    • 0

光ケーブル云々ではなくて、画像が表示されればパスは正しい、表示されなければパスは正しくない。


これだけだと思いますが。
    • good
    • 0

両方試してみて使えるほうにしたらどうですか?


こういうのは質問するよりも実際にやってみたほうが早いですよ。

この回答への補足

光ケーブルなので、画像が先読みされているかどうかわかりにくいんです。
(ーー;)

補足日時:2005/07/23 14:20
    • good
    • 0

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


おすすめ情報