Можете ли вы передать параметры URL в файл Javascript? - PullRequest
4 голосов
/ 03 ноября 2011
<script src="myscript.js?someParameter=123"></script>

Изнутри myscript.js, есть ли способ получить, что someParameter было установлено на 123?Или это единственный способ использовать серверные сценарии, которые генерируют файл javascript с параметрами в нем?

Ответы [ 2 ]

2 голосов
/ 03 ноября 2011

Ну, вы получаете параметры URL от window.location.href. Как видно из названия, оно относится к текущему окну. Что делает тег <script>, чтобы встроить связанный файл в текущий документ, то есть в то же окно. Если вы проанализировали window.location.href из связанного файла JavaScript, вы получите только URL из документа вложения.

Существует два способа передачи параметров в другой файл JavaScript:

  1. Как предложил @Dave Newton, просто объявите переменную, а затем вставьте JS-файл, как вы делали (конечно, без параметров, потому что они не действуют).
  2. Создайте iframe, передайте нужные параметры URL-адресу iframe, а затем вставьте файл JavaScript в iframe. Iframe создаст новый экземпляр window.
1 голос
/ 03 ноября 2011

Jquery Address делает это, поэтому я проверял их код, и это улучшенное решение, которое я только что создал сам:

$.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);
    }
});

Надеюсь, это делает то, что вам нужно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...