【发布时间】:2009-12-21 03:42:08
【问题描述】:
你能像这样将键值对传递给 JavaScript 文件吗:
<script type="text/javascript" src="http://www.example.com/script.js?key=value"></script>
【问题讨论】:
标签: javascript html
你能像这样将键值对传递给 JavaScript 文件吗:
<script type="text/javascript" src="http://www.example.com/script.js?key=value"></script>
【问题讨论】:
标签: javascript html
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"
【讨论】:
不容易,除非您希望它们由生成 Javascript 的服务器端代码处理。
但是,您可以在较早的 script 块中将变量定义为参数。
例如:
<script type="text/javascript">
var key = value;
</script>
<script type="text/javascript" src="http://www.example.com/script.js></script>
然后您可以像使用任何其他变量一样在script.js 中使用key 变量。
编辑:正如 Upper Stage 所指出的,将参数放在自己的命名空间中会更好。
例如:
<script type="text/javascript">
var MyScriptParameters = {
param1: 123,
param2: "Hello",
param3: new Date,
param4: function(text) { ... }
};
</script>
然后您可以在script.js(或页面上的任何其他脚本)中写入MyScriptParameters.param2
【讨论】:
不是那样的。上面将在 HTTP 服务器上执行带有参数key=value 的 GET 请求。这些不会(通常)影响返回给您的资源script.js(这是上面要求的)。
【讨论】:
要添加到 SLaks 答案,json 编码数据可以处理您的转义需求。在 php 中:json_encode()
【讨论】: