你可以将URL参数传递给Javascript文件吗?

时间:2011-11-03 09:07:43

标签: javascript url parameters

<script src="myscript.js?someParameter=123"></script>

myscript.js开始,有没有办法获得someParameter设置为123?或者是使用服务器端脚本生成带有参数的javascript文件的唯一方法吗?

2 个答案:

答案 0 :(得分:2)

好吧,您可以从window.location.href获取网址参数。顾名思义,它指的是当前窗口。 <script>标记用于将链接文件嵌入到当前文档中,从而进入同一窗口。如果您从链接的JavaScript文件中解析window.location.href,则只能从嵌入文档中获取URL。

有两种方法可以将参数传递给另一个JavaScript文件:

  1. 正如@Dave Newton建议的那样,只需声明一个变量,然后像你一样嵌入JS文件(当然没有参数,因为它们没有效果)。
  2. 创建iframe,将您想要的参数传递给iframe的网址,然后将JavaScript文件嵌入iframe中。 iframe将创建一个新的window实例。

答案 1 :(得分:1)

Jquery地址这样做,所以我一直在检查他们的代码,这是我刚刚创建的改进的解决方案:

$.each($('script'), function(id, val){ //loop trough all script-elements
    var tmp_src = String($(this).attr('src'));//store the src-attr
    var qs_index = tmp_src.indexOf('?');//check if src has a querystring and get the index

    //Check if the script is the script we are looking for and if it has QS-params
    if(tmp_src.indexOf('myscript.js') >= 0 && qs_index >= 0)
    {
        //this is myscript.js and has a querystring
            //we want an array of param-pairs: var1 = value1, var2 = value2, ...
        var params_raw = tmp_src.substr(qs_index + 1).split('&');

        //create empty options array
        var options = [];

        //loop troug raw params
        $.each(params_raw, function(id, param_pair){
                    //split names from values
            var pp_raw = param_pair.split('=');
                    //store in options array
            options[pp_raw[0]] = pp_raw[1];
        });
            //check the results out in the console!
        console.log(options);
    }
});

我希望这能满足您的需求吗?