2009-07-30 93 views
6

非常简单,我有一个JS脚本,包含在许多不同的网站上,需要传递给它的参数。Javascript中是否有任何类似于PHP中的__FILE__变量?

这将是有用的,如果这些可以通过URL进行传递,例如:

<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> 
+0

http://stackoverflow.com/questions/1017424/pass-vars-to-javascript-via-the-src-attribute/1017461 #1017461 – 2009-07-30 06:34:57

回答

1

error.fileName会告诉你,剧本是从文件(不知道是否工作在每一个浏览器,我已经在Firefox &歌剧测试过)

var filename = (new Error).fileName; 
+2

没有去IE和Chrome。 – 2009-07-30 01:58:04

+0

这真的很接近,并且因为IE是......嗯,IE,我90%肯定有一个浏览器特定的等价物。 – 2009-07-31 22:17:01

0

为了做这样的事情,你需要使用服务器端语言来为你呈现JS。

我不会推荐它。

2

只有当变量可以确定什么加载了JavaScript代码时(例如,请求由PHP处理,动态构建JS文件),才应使用此方法。

如果您想要将信息传递给JavaScript代码,请在代码中加载后使用函数或变量。

3

没错。额外的奖励:我将查询字符串参数转换为更加可用的JavaScript哈希值。

HTML:

<script src="script.js?var1=something&var2=somethingelse" type="text/javascript"></script> 

script.js

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; 
} 
相关问题