将键值对传递给JavaScript文件

时间:2009-12-20 17:59:46

标签: javascript html

您是否可以将键值对传递给JavaScript文件:

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

4 个答案:

答案 0 :(得分:6)

scriptaculous使用该技术(参见line 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"

答案 1 :(得分:2)

不容易,除非您希望它们由生成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

答案 2 :(得分:0)

不是那样的。以上将在HTTP服务器上使用参数key=value执行GET请求。那些不会(通常)影响返回给你的资源script.js(这就是上面所要求的)。

答案 3 :(得分:0)

添加到SLaks答案,json编码数据处理您的转义需求。在php:json_encode()