2012-01-12 6 views
1

私はどのように私は、HTMLに渡された変数Vを参照してください javascriptに渡されるパラメータをhtmlでどのように参照しますか?

<script type="text/javascript" 
     src="include/javascript/test_something.js?v=1128557"></script> 
経由でスクリプトを呼び出しますか?

ありがとうございました!あなたは次のことを行う必要があります

+0

私は、コードを掲載する際、HTMLは解析されてしまいました。 – aspectplatinum

+0

どのサーバー側のテクノロジーを使用していますか? –

+0

この値(1128557)はどこから来ますか? –

答えて

1

。これはPHPのです。

<?php 
$v=1128557; 
?> 
<script type="text/javascript"> 
    //This will make this value available to javascript too 
    var val=<?php=$v?>; 
</script> 
<script type="text/javascript" 
     src="include/javascript/test_something.js?v=<?php=$v?>"></script> 

... 
... 
... 
<div id='baba<?php=$v?>'> 
... 
... 
</div> 

これは次に

<?php 
echo "var queryString='" . $_SERVER[`QUERY_STRING] . "'\n;"; 
?> 
... rest of javascript here 

あなたも実行できるようにスクリプトtest_something.phpを作成

<script type="text/javascript"> 
    //This will make this value available to javascript too 
    var val=1128557; 
</script> 
<script type="text/javascript" 
     src="include/javascript/test_something.js?v=1128557"></script> 

... 
... 
... 
<div id='baba1128557'> 
... 
... 
</div> 
+0

私はあなたが質問を正しく読んだことはないと思います。私たちは、サーバーサイドのスクリプトではなく、javascriptに渡されるオプションを見つける方法を探しています。 –

+0

@Milad Naseri質問を読んで理解しました。私は私のソリューションが正しいものだと信じています(少なくともそれは最も単純なものです)。彼は価値を前もって知っています。なぜ、人々がいつ、いかに簡単でシンプルな解決策がHTMLページに様々な部分を繰り返すことを提案しているのでしょうか? –

+0

あなたは正しいかもしれませんが、それはただの仮定です。コメントに基づいて、私はそのオプションがないと言いたいと思います。そして、たとえそれがあったとしても、遅れてロードされたJavaScriptは後でそのデータにアクセスする必要があります。あるいは、問題のJavaScriptが、クライアント側から別のスクリプトによって遅延ロードされている可能性もあります。 –

-1

var scripts = document.getElementsByTagName('script'); 
var data = {}; 
for (var i = 0; i < scripts.length; i ++) { 
    if (!scripts[i].src) { 
     continue; 
    } 
    var value = scripts[i]..substring(scripts[i].indexOf('?') + 1); 
    var params = value.split('&'); 
    for (var i = 0; i < params.length; i ++) { 
     params[i] = params[i].split('='); 
     data[params[i][0]] = params[i][1]; 
    } 
} 

EDIT:ちょうど他の人からのヒントのいくつかを組み込んだ、と私自身の答えにそれらを追加しました。

-1

JavaScriptは、が実行されたページのURLデータにのみアクセスします。はvia window.locationです。 Webサーバーが明示的にJavaScriptを出力にJavaScriptにシリアル化しない限り、javascriptファイル自体に渡されるHTTP要求変数にはアクセスできません。

スクリプトタグを見つけ、src属性を取得し、URLを解析し、必要なGETパラメータを抽出するのが1つのハック/回避策です。

function getParamsFor(script) { 
    var params, anchor, paramArray, keyVal, tag, scripts; 

    scripts = document.getElementsByTagName("script"); 

    // Make sure [].filter exists beforehand 
    tag = Array.prototype.filter.call(scripts, function (e) { 
     return e.src.indexOf(script) > -1; 
    })[0]; 

    if (tag) { 
     anchor = document.createElement("a"); 
     anchor.href = tag.src; 

     paramArray = anchor.search.substring(1).split('&'); 
     params = {}; 

     for(var i = 0; i < paramArray.length; i++) { 
      keyVal = paramArray[i].split('='); 
      params[unescape(keyVal[0])] = (typeof keyVal[1] != "undefined") ? unescape(keyVal[1]) : keyVal[1]; 
     } 

     return params; 
    } 
} 

var o = getParamsFor("test_something.js"); 
o.v; // 112.. 
+0

ダウンボートは何ですか? –

+0

このコードは少し長いですが、明らかに仕事もしています。ありがとう! – aspectplatinum

1

あなたのページの最後のscript要素のsrc属性からそれを取得します。最も簡単な方法は、サーバー側の技術を用いることであろう

var scripts = document.getElementsByTagName("script"); 
var src = scripts[scripts.length - 1].src; 
var v = null; 
if (/\?v=(.+)$/.test(src)){ 
    v = RegExp.$1; 
} 
+1

なぜ最後のスクリプト要素ですか? :-) –

+0

ええ、なぜ最後の?上記のコードを 'window.location.href'の代わりにすべてのスクリプト要素SRCで実行すると、このトリックが実行されます。 –

+1

スクリプトが実行されるとき、その要素はページの最後の要素です。もちろん、ページが読み込まれるまで待っていれば、あなたの仕事はずっと難しくなりました。私は答えを編集してそのことを説明するメモを入れるつもりでしたが、私は自分の電話で入力しています。私の答えを編集できるよりも速くあなたのコメントがあります。 – gilly3

-1

変更それ

<script type="text/javascript" 
     src="include/javascript/test_something.php?v=1128557" /> 

に次のHTMLに変換されますe PHPを使用してクエリ文字列をチェック/解析するか、またはJavascriptでこれを行うだけです。それが最初のスクリプトタグは、ページ上にある場合は

1

、あなたのような何かを行うことができます:それは最初のスクリプトタグはありません場合は

var thescripttag = document.getElementsByTagName('script'); 
var v = thescripttag[0].src.replace(/^[^\?]+\??/,''); //gets everything after the '?' 

を、あなたは[0]それはどちらか一つであることが変更、または試すことができますスクリプトタグにIDを割り当てます(未テスト)。

0

目的のファイル名を探して、.srcのURLからパラメータを取得することで、適切なスクリプトタグを見つけることができます。

function findScriptParams(fname) { 
    fname = "/" + fname + "?"; 
    var scripts = document.getElementsByTagName("script"); 
    for (var i = 0; i < scripts.length; i++) { 
     var pos = scripts[i].src.indexOf(fname); 
     if (pos != -1) { 
      return(scripts[i].src.substr(pos + fname.length)); 
     } 
    } 
} 

そして、あなたはこのようにそれを呼び出します:私は私のポストを更新

var params = findScriptParams("test_something.js"); 
if (params) { 
    // process the params here 
}