外部ファイルを呼び出す際のGET値の取得



0   名前: れんこ : 2005/10/02 21:38
質問させて頂きます。

HTML等から外部.jsファイルを呼び出すとき
例えば src="b.js?0001" と記載し
URLに引数を与えた場合、b.js内でどのように処理するのでしょうか?
location.searchでは呼び出し元のHTMLに対する
値になってしまうので、わからず困っております。

宜しくお願い致します。

1   名前: m035 : 2005/10/02 21:38
JavaScriptの外部ファイルは単体で呼び出されることはないと思いますが・・・。
HTML上で使うための言語ですので、
src="b.js"
として
変数や関数にデータをセットするしかないと思います。

2   名前: れんこ : 2005/10/02 21:38
回答ありがとうございます。
ちょっと説明不足だったかもです。

HTML内に
<script language="javascript" type="text/javascript" src="./b.js?0001" ></script>

と記載し、b.jsでは?以降の引数(今回は0001)を利用したいのです。
最終的にb.jsからの出力がdocument.write("?以降は0001");となり
表示は ?以降は0001 にという感じです。

宜しくお願いたします。

3   名前: m035 : 2005/10/02 21:38
JavaScript外部ファイル自体のsrcを取得する方法自体はないと思われますので。
もし、面倒であればb.js内に変数(仮にhoge)を宣言し、それに代入する以下の方法を
<script language="javascript" type="text/javascript">
<!--
hoge="0001";
-->
</script>
そうでなければ

<script language="javascript" type="text/javascript" src="./b.js?0001" ></script>

このHTMLのソースから?以降を抜き出すしかなさそうです。
以下はIE6のみで動作を確認したソースから文字を抜き出すと言う、
強引な方法で作られたサンプルです。
同じディレクトリにb.jsが存在する必要があります。

<html>
<head>
<script language="javascript" type="text/javascript" src="./b.js?0001" ></script>
<script type="text/javascript">
<!--
window.onload=function(){
var deta=document.body.parentElement.innerHTML.match(/b\.js\?\d+/);
document.write("?以降は"+deta.toString().substr(5));
}
//-->
</script>
</head>
<body>
</body>
</html>

4   名前: れんこ : 2005/10/02 21:38
>JavaScript外部ファイル自体のsrcを取得する方法自体はないと思われますので。
そうですか、、
丁寧なご回答ありがとうございました。

5   名前: きあらうむ : 2005/10/02 21:38
グローバル変数に "0001" を代入しておけば、ページ内のどのJSファイルからでも
内容を参照することができます。

<script type="text/javascript">

id = "0001"; // グローバル変数 b.jsより先に宣言しておく

</script>

[ b.js ]
----------------

document.write(id);

----------------

6   名前: 元帥 : 2005/10/02 21:38  [URL
CGI等を使う方法。
環境変数から取得できます。

<script type="text/javascript" src="b.cgi?0001" ></script>

7   名前: れんこ : 2005/10/02 21:38
きあらうむ様
元帥様
さらにご回答ありがとうございます。
なるべくスマートに記載したいので、CGI(PHP)で取得後に
JAVASCRIPTを吐き出すようにしようと思います。
ありがとうございました。

一覧へ戻る