.jsファイルを出し分けするには?

[上に] [前に] [次に]
うぐいす 1999/11/30(火) 16:29:38
<script language="JavaScript" src="main.js"></script>
上記のように、JavaScriptを別ファイルにしている場合、
通常は”main.js”を読み込むようにしていますが、
”main.js”というファイルが存在しない場合には、
かわりに”sub.js”を読み込むというのは、可能でしょうか?

ASP(VBScript)を使用すると、可能なのは分かっているのですが、
出来るだけHTMLとJavaScriptのみで行なえないかと思っています。

どなたかご存知の方がいらっしゃるならば、ご指南お願いします。m(__)m

うぐいす 1999/12/01(水) 10:42:00
やっぱり、解答つかないですね。(^^;)

とりあえず、ASPを使う方法で対応しますが、
もしかしたら、HTML+JavaScriptのみで
実現させる方法をご存知の方がいるかもしれませんので、
もう少し、解決マークをつけずに置いておきます。

P初心者 1999/12/01(水) 12:20:13
「HTMLとJavaScriptのみ」の条件プラス CGI ならいけるのですが...。
だめですねぇ!

無責任官庁 1999/12/01(水) 15:41:15
ちょっと変則的なやり方かもしれないですけど・・・
----------main.js-----------
js_active = 'main';
function main_script(){
  //スクリプト
}
----------------------------
----------sub.js-----------
js_active = 'sub';
function sub_script(){
  //スクリプト
}
----------------------------

といったスクリプトファイルがあるとして、
----------htmlファイル------
<script language="JavaScript">
js_active = 'none';
</script>
<script language="JavaScript" src="sub.js"></script>
<script language="JavaScript" src="main.js"></script>
<script language="JavaScript">
if(js_active == 'main'){
ret = main_script();
}else if(js_active == 'sub'){
ret = sub_script();
}else{
alert("jsファイルがありません");
}
</script>
----------------------------

なんてのはどうでしょう。
jsファイルが無くてもエラーにならないのを利用したモノですけど。

無責任官庁 1999/12/01(水) 15:54:59
HTML の方の説明が抜けてました(^-^;

これ、main.js があれば、main.js の関数を実行。
なければ、sub.js の関数を実行する。
両方あったら、main.js が優先。
両方無ければ、alert になります。

で、Win の IE4 と NN3.04,NN4.08,NC4.7 で動作確認。
ファイルが無くてもエラーは出ませんでした。
エラーが出るブラウザを持ってないので、これ以上は分かりません。

#オマケで、HotJava3 でもやってみたけど、
#エラーは出ないみたい。結果オーライなのかな(謎)

うぐいす 1999/12/01(水) 17:21:29
P初心者さん、無責任官庁さんお返事有難うございました。

>P初心者さん
>「HTMLとJavaScriptのみ」の条件プラス CGI ならいけるのですが...。
実は、Perl触ったことないんです。
VBプログラミングの経験があるのとサーバーがNTなのをいいことに
ASP(VBScript)に逃げてます。(汗)

>無責任官庁さん
早速、試してみたのですがjsファイルを作成せずに実行したら、
ブラウザでURLを"http://〜/index.html"と指定してるにも関わらず、
"http://〜/sub.js"と勝手に変わり、ファイルが見つかりません(エラーナンバー 404)と怒られてしまいました。
多分、HTMLに「src="〜.js"」と書き出された時点で、
そのファイルを探しにいってるのだと思います。
テストにはWinNT4.0+SP3、NN4.6を使用しています。

# はじめheadタグ内に書いたのですがエラーが出たため、
# 念のためbodyタグの中にscript文を移したりしましたが、
# エラーメッセージは変わりませんでした。(;_;)

のぐ 1999/12/02(木) 00:24:47
プラス、サーバー設定もありでならば、ディレクトリだけ指定さ
れた場合、どのファイルを取ってくるかという指定(*)を、
    main.js,sub.js,index.html
などとしておき(優先順位順だが、JS以外のとき悪さしないよう
に index.html は最後)、
    <script src="/">
という風に指定するというのはどーでしょう。

(*)
IISではデフォルトドキュメントなどという設定。複数書けるかどうか知らないです。
Netscape では Index Filenames 。こちらは複数書けます。

うぐいす 1999/12/02(木) 13:41:55
のぐさん、ご返答有難うございます。

サーバーの設定を変えることは、考えていませんでした。
そんな方法もあるんですね。

一つ疑問なのですが、この場合のindex.htmlは
main.jsもsub.jsも存在しなかった場合の処理がかかれているものと
考えてよいのでしょうか?

もともと、
index.html − main.js(無ければsub.js)の呼出元ファイル
main.js  − 通常時にindex.htmlで使われるscript群
sub.js   − main.jsが存在しない時にindex.htmlで使われるscript群
というイメージで書いたので、
>main.js,sub.js,index.html
と書いたら、結局main.js及びsub.jsが無くてエラーが出そうな気がするのですが・・・。

う〜ん。頭で考えていても分からないので、
一度、試してきますね。(^-^)/

うぐいす 1999/12/03(金) 17:14:58
[[解決]]
サーバー管理者の了承がもらえなかったため、
設定をいじることは出来ませんでした。
そのため、のぐさんの方法は試していませんが、
ASPを使ってのソースが完成したので、
解決マークをつけておきます。

P初心者さん、無責任官庁さん、のぐさん、
ご意見くださって本当に有難うございました。

[上に] [前に] [次に]