Javascript中有没有类似于PHP的__FILE__变量?

时间:2009-07-30 01:08:10

标签: javascript variables

非常简单,我有一个JS脚本,它包含在许多不同的站点上,需要传递参数。

如果可以通过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>

4 个答案:

答案 0 :(得分:4)

是的。额外的好处:我将查询字符串参数转换为更实用的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;
}

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

error.fileName将告诉您脚本来自的文件(不确定它是否适用于所有浏览器;我已在Firefox和Opera中测试过它)

var filename = (new Error).fileName;

答案 3 :(得分:0)

为了做类似的事情,你需要使用服务器端语言来为你渲染JS。

我不推荐它。