私はどのように私は、HTMLに渡された変数Vを参照してください javascriptに渡されるパラメータをhtmlでどのように参照しますか?
<script type="text/javascript"
src="include/javascript/test_something.js?v=1128557"></script>
経由でスクリプトを呼び出しますか?
ありがとうございました!あなたは次のことを行う必要があります
私はどのように私は、HTMLに渡された変数Vを参照してください javascriptに渡されるパラメータをhtmlでどのように参照しますか?
<script type="text/javascript"
src="include/javascript/test_something.js?v=1128557"></script>
経由でスクリプトを呼び出しますか?
ありがとうございました!あなたは次のことを行う必要があります
。これは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>
私はあなたが質問を正しく読んだことはないと思います。私たちは、サーバーサイドのスクリプトではなく、javascriptに渡されるオプションを見つける方法を探しています。 –
@Milad Naseri質問を読んで理解しました。私は私のソリューションが正しいものだと信じています(少なくともそれは最も単純なものです)。彼は価値を前もって知っています。なぜ、人々がいつ、いかに簡単でシンプルな解決策がHTMLページに様々な部分を繰り返すことを提案しているのでしょうか? –
あなたは正しいかもしれませんが、それはただの仮定です。コメントに基づいて、私はそのオプションがないと言いたいと思います。そして、たとえそれがあったとしても、遅れてロードされたJavaScriptは後でそのデータにアクセスする必要があります。あるいは、問題のJavaScriptが、クライアント側から別のスクリプトによって遅延ロードされている可能性もあります。 –
:
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:ちょうど他の人からのヒントのいくつかを組み込んだ、と私自身の答えにそれらを追加しました。
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..
ダウンボートは何ですか? –
このコードは少し長いですが、明らかに仕事もしています。ありがとう! – aspectplatinum
あなたのページの最後のscript要素のsrc
属性からそれを取得します。最も簡単な方法は、サーバー側の技術を用いることであろう
var scripts = document.getElementsByTagName("script");
var src = scripts[scripts.length - 1].src;
var v = null;
if (/\?v=(.+)$/.test(src)){
v = RegExp.$1;
}
なぜ最後のスクリプト要素ですか? :-) –
ええ、なぜ最後の?上記のコードを 'window.location.href'の代わりにすべてのスクリプト要素SRCで実行すると、このトリックが実行されます。 –
スクリプトが実行されるとき、その要素はページの最後の要素です。もちろん、ページが読み込まれるまで待っていれば、あなたの仕事はずっと難しくなりました。私は答えを編集してそのことを説明するメモを入れるつもりでしたが、私は自分の電話で入力しています。私の答えを編集できるよりも速くあなたのコメントがあります。 – gilly3
変更それ
<script type="text/javascript"
src="include/javascript/test_something.php?v=1128557" />
に次のHTMLに変換されますe PHPを使用してクエリ文字列をチェック/解析するか、またはJavascriptでこれを行うだけです。それが最初のスクリプトタグは、ページ上にある場合は
、あなたのような何かを行うことができます:それは最初のスクリプトタグはありません場合は
var thescripttag = document.getElementsByTagName('script');
var v = thescripttag[0].src.replace(/^[^\?]+\??/,''); //gets everything after the '?'
を、あなたは[0]それはどちらか一つであることが変更、または試すことができますスクリプトタグにIDを割り当てます(未テスト)。
目的のファイル名を探して、.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
}
私は、コードを掲載する際、HTMLは解析されてしまいました。 – aspectplatinum
どのサーバー側のテクノロジーを使用していますか? –
この値(1128557)はどこから来ますか? –