Javascript中是否有与PHP中的_文件_变量类似的内容?
非常简单,我有一个JS脚本,它包含在许多不同的站点上,需要将参数传递给它 如果这些信息可以通过URL传递,则会很有用,例如:Javascript中是否有与PHP中的_文件_变量类似的内容?,javascript,variables,Javascript,Variables,非常简单,我有一个JS脚本,它包含在许多不同的站点上,需要将参数传递给它 如果这些信息可以通过URL传递,则会很有用,例如: <script type="text/javascript" src="http://path.to/script.js?var1=something&var2=somethingelse"></script> 是的,您仍然可以在单独的脚本标记中预填充变量,但它有点凌乱,不太容易传递: <script type="te
<script type="text/javascript"
src="http://path.to/script.js?var1=something&var2=somethingelse"></script>
是的,您仍然可以在单独的脚本标记中预填充变量,但它有点凌乱,不太容易传递:
<script type="text/javascript">var1=something; var2=somethingelse</script>
<script type="text/javascript" src="http://path.to/script.js"></script>
var1=something;var2=某物
为了完成类似的操作,您需要使用服务器端语言为您呈现JS
我不建议这样做。只有当变量确定加载了什么JavaScript代码时(例如,通过PHP处理请求,动态构建JS文件),才应使用此方法
如果要将信息传递给JavaScript代码,请在加载后在代码中使用函数或变量。
错误。fileName
将告诉您脚本来自哪个文件(不确定它是否在每个浏览器中都能工作;我已经在Firefox和Opera中对其进行了测试)
是的。额外的好处:我将查询字符串参数转换为更可用的javascript哈希 HTML:
这真的很接近,考虑到IE。。。嗯,也就是说,我90%确定有一种特定于浏览器的方法与此等效。这是一种非常好的方法,但它需要通过完整的DOM进行假脱机,这可能不可靠。@Paul:这里没有假脱机。不必“完成”DOM即可使
文档.getElementsByTagName
正常工作。如何使用异步
/延迟
属性?scriptSource()
函数是这样写的吗?
var filename = (new Error).fileName;
<script src="script.js?var1=something&var2=somethingelse" type="text/javascript"></script>
var scriptSource = (function() {
var scripts = document.getElementsByTagName('script');
return scripts[scripts.length - 1].src
}());
var params = parseQueryString(scriptSource.split('?')[1]);
params.var1; // 'something'
params.var2; // 'somethingelse'
// Utility function to convert "a=b&c=d" into { a:'b', c:'d' }
function parseQueryString(queryString) {
var params = {};
if (queryString) {
var keyValues = queryString.split('&');
for (var i=0; i < keyValues.length; i++) {
var pair = keyValues[i].split('=');
params[pair[0]] = pair[1];
}
}
return params;
}