3

JSをロードしたいのですが、パラメータによって動作が異なるはずです。これを行う方法の1つは次のようになると思いました。

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

次に、次のように正規表現を使用してパラメーターを取得します。

function getURLParameter(name) {
    return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null;
}

(上記の機能はここから)。

ただし、これが最善のアプローチであるかどうかはわかりません。<script></script>内にグローバル変数をロードしてJSから読み取るなど、これを行う他の方法を提案しますか?

4

4 に答える 4

5

一般にコードを整理するためのより良い方法があるかもしれませんが、URLクエリよりもパラメーターを構成する簡単な方法は、引数を使用して定義された関数を呼び出すことです。

外部スクリプト(foo.js):

function foo(param) {
    console.log(param);
}

HTML:

<script src="foo.js"></script>
<script>foo("parameter value");</script>

編集:これは、すぐに何も呼び出さずにパラメーターを「構成」する例です(基本的には単純なクロージャー):

function (param) {
    $(document).ready(function () {
        // Use param
    });
}

$(document).readyはすでに非同期呼び出しであるため、これは他の場合よりも簡単ですが、一般的にはIIFE(即時呼び出し関数式)を使用できます。(function (param) { })(paramValue)

于 2013-03-05T16:16:21.263 に答える
1

指定した関数は、ロードされgetURLParameterたURLではなく、アドレスバーに表示されるURLを使用します。<script>

それを取得するには、次のように置き換える必要がありlocation.searchます

Array.prototype.pop.call(document.getElementsByTagName('script')).getAttribute("src");
于 2013-03-05T16:16:46.960 に答える
0

あなたはphpであなたのjavascriptを作って使うことができます

var parameters = <?php echo json_encode($_GET); ?>
function getURLParameter(name) {
    return parameters[name];
}
于 2013-03-05T16:17:19.237 に答える
0

外部スクリプトを取得する前にグローバル変数を設定し、それを内部で使用します。

<script>var someParameter = 'a';</script>
<script src="script.js"></script>
于 2013-03-05T16:15:29.740 に答える