0

重複の可能性:
クエリ文字列値を取得するにはどうすればよいですか?

たとえば、<script>HTMLマークアップにこのようなタグがあります

<script src="/path/file.js?test=1&data=2"></script>

..内のクエリ文字列にアクセスする方法はありますfile.jsか?window.locationもちろん変わらないので、そのために使うことはできません。

これが不可能な場合、どのようにしてデータをスクリプトファイルに渡すことができますか?

4

4 に答える 4

3

Musa はここで正しいアプローチをとっています (コメントから)。スクリプト タグには、他の方法と同じようにアクセスできます (ID を使用して簡単にアクセスできます)。

<script id='my_script_1' src="/path/file.js?test=1&data=2"></script>

次に、src を解析して、クエリ文字列のみを取得します。

var js_lib = document.getElementById('my_script_1');
var js_url = js_lib.src;
var js_url_pieces = js_url.split('?');
alert(js_url_pieces[1]);

注: 簡単にするために分割を使用しています。regexを使用することをお勧めします。

js ファイルをリロードする場合は、ソースをリセットするだけです。

js_lib.src = js_url_pieces[0]+'?new query string';

ほとんどのブラウザで動作するはずです。

または、他の人が述べたように、より柔軟な関数を作成するか、グローバル変数を使用して、_GET vars を介してやろうとしていることを達成したい場合があります。

于 2012-09-19T23:55:53.837 に答える
0

私が考えることができる唯一の信頼できる方法はdocument.currentScriptを使用することですが、それは現在Firefoxでのみサポートされています。

この質問にはいくつかの有用な情報があるかもしれません。

スクリプトファイルにデータを渡すために、グローバル変数を使用する場合があります。私は一般的にそれらが本当に好きではありませんが、これはそれらの適切な使用法かもしれません。

于 2012-09-19T23:43:22.147 に答える
0

親ドキュメントから含まれている javascript ファイルにデータを渡したいようです。次のように、グローバル変数でそれを行うことができます

あなたのファイル.html:

<script>
var myVar = "Hi";
</script>
<script src="script.js"></script>

script.js:

alert(myVar);
于 2012-09-19T23:53:27.490 に答える
0

スクリプトが実行されると、そのスクリプトはページの最後の要素になります (JavaScript がブロックされているため)。これを利用できます:

var scripts = document.getElementsByTagName('script'),
    me = scripts[scripts.length-1],
    myurl = me.getAttribute("src"),
    myquery = myurl.split("?")[1].split("#")[0].split("&"),
    qcount = myquery.length, query = {}, i, tmp;
for( i=0; i<qcount; i++) {
    tmp = myquery[i].split("=");
    query[decodeURIComponent(tmp[0])] = decodeURIComponent(tmp[1]);
}

これは、コードの最も外側のスコープにある場合にのみ機能することに注意してください。関数ではありません。また、非同期または遅延スクリプトでは機能しません。

于 2012-09-20T00:00:02.527 に答える