JS的参数 - 这是最好的方法吗?

时间:2013-03-05 16:13:24

标签: javascript jquery html regex performance

我想加载JS,他的行为应根据一个参数而有所不同。我认为其中一种方法可能是:

<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;
}

(以上来自here的函数)。

但是,我不确定这是否是最佳方法。你有没有其他方法可以做到这一点,比如在<script></script>中加载全局变量然后从JS中读取它们?

4 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

您提供的getURLParameter功能将使用您在地址栏中看到的网址,而不是加载<script>的网址。

为此,您需要将location.search替换为

Array.prototype.pop.call(document.getElementsByTagName('script')).getAttribute("src");

答案 2 :(得分:0)

我只需在获取外部脚本之前设置一个全局变量,然后在里面使用它:

<script>var someParameter = 'a';</script>
<script src="script.js"></script>

答案 3 :(得分:0)

你可以在php中制作你的javascript并使用

var parameters = <?php echo json_encode($_GET); ?>
function getURLParameter(name) {
    return parameters[name];
}