网站搜索

在 Javascript 中有类似于 PHP 中 __FILE__ 变量的东西吗?


相当直接,我有一个 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>

答案#1

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

答案#2

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

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