您是否可以将键值对传递给JavaScript文件:
<script type="text/javascript" src="http://www.example.com/script.js?key=value"></script>
答案 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()