Передача пар ключ-значение в файл JavaScript - PullRequest
0 голосов
/ 20 декабря 2009

Можете ли вы передать пары ключ-значение в файл JavaScript следующим образом:

<script type="text/javascript" src="http://www.example.com/script.js?key=value"></script>

Ответы [ 4 ]

6 голосов
/ 20 декабря 2009

Эта техника используется scriptaculous (см. строка 54 ):

<script type="text/javascript" src="scriptaculous.js?load=effects,dragdrop">
</script>

Вы можете добиться этого, проверив источник элементов script на своей странице, я оставляю вам независимую от фреймворка функцию:

function getScriptVariable(scriptName, key) {
  var scripts = document.getElementsByTagName('script'),
      n = scripts.length, scriptSource, i, r;

  for (i = 0; i < n; i++) {
    scriptSource = scripts[i].src;
    if(scriptSource.indexOf(scriptName)>=0) {
      r = new RegExp("[\\?&]"+key+"=([^&#]*)");
      var keyValues = r.exec(scriptSource);
      return keyValues[1];
    }
  }
}

Затем вы можете встроить скрипт так, как хотите:

<script type="text/javascript" src="myScript.js?myKey=myValue">
</script>

И используйте вышеуказанную функцию следующим образом:

var value = getScriptVariable('myScript.js', 'myKey'); // "myValue"
2 голосов
/ 20 декабря 2009

Не легко, если только вы не хотите, чтобы они обрабатывались серверным кодом, генерирующим Javascript.

Однако вы можете определить переменные в более раннем блоке script в качестве параметров.

Например:

<script type="text/javascript">
    var key = value;
</script>

<script type="text/javascript" src="http://www.example.com/script.js></script>

Затем вы можете использовать переменную key в script.js, как и любую другую переменную.

РЕДАКТИРОВАТЬ : Как указывало Upper Stage, было бы лучше поместить параметры в их собственное пространство имен.

Например:

<script type="text/javascript">
    var MyScriptParameters = {
        param1: 123,
        param2: "Hello",
        param3: new Date,
        param4: function(text) { ... }
    };
</script>

Вы можете написать MyScriptParameters.param2 в script.js (или в любом другом скрипте на странице)

0 голосов
/ 20 декабря 2009

чтобы добавить в SLaks ответ, json-кодирование данных обрабатывает ваши побеги. в php: json_encode()

0 голосов
/ 20 декабря 2009

Не так. Выше будет выполнено GET-запрос на HTTP-сервере с параметрами key=value. Они не будут (обычно) влиять на возвращаемый вам ресурс script.js (о чем просит вышеупомянутое).

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