将变量添加到.js文件中

时间:2012-05-07 20:29:41

标签: javascript jquery

我正在寻找一种在外部.js文件中发布变量的方法。

类似的东西:

<script type="text/javascript" src="/js/script-starter.js?var=value"></script>

然后我想调用var(因此,值)。这有可能吗?

谢谢!

5 个答案:

答案 0 :(得分:8)

是的,有可能。您必须使用document.getElementsByTagName函数查找DOM中的所有script标记(确保在尝试查看之前加载DOM),循环生成结果列表,找到相应的脚本和解析src属性以提取您要查找的值。

有些事情:

var scripts = ​document.getElementsByTagName('script');
​for (var i = 0; i < scripts.length; i++)​ {
    var src = scripts[i].src;
    // Now that you know the src you could test whether this is the script
    // that you are looking for (i.e. does it contain the script-starter.js string)
    // and if it does parse it.
}​

就解析src属性而言,从中提取查询字符串值时,您可以使用following function

答案 1 :(得分:2)

如果该脚本是服务器端脚本,可以在查询字符串中接收变量并返回javascript代码作为输出

答案 2 :(得分:1)

如何在加载脚本文件之前声明变量:

<script type="text/javascript">var myVar = "Value"</script>
<script type="text/javascript" src="/js/script-starter.js"></script>

因此,您可以在脚本中使用此变量。可能这是最简单的方法之一。

答案 3 :(得分:0)

为什么不将变量放在隐藏的a或p

<a id="myHiddenVar" style="display:none;">variables</a>

然后在.js中使用

访问它
var obj = document.getElementById("myHiddenVar").innerHTML;

或jQuery样式

var obj = $("#myHiddenVar").text();

答案 4 :(得分:0)

function getJSPassedVars(script_name, varName) {
    var scripts = $('script'),
        res = null;

    $.each(scripts, function() {
        var src = this.src;
        if(src.indexOf(script_name) >= 0) {
            varName = varName.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
            var string = new RegExp("[\\?&]"+ varName +"=([^&#]*)"),
                args = string.exec(src);
            if(!args.length) { 
                res = null; 
            } else { 
                res = args[1]; 
            }
        }
    });
    return res;
}

console.log(getJSPassedVars('script-starter.js', 'var'));

在我的情况下,我的app文件夹结构如下:

MyApp/
     index.html
     jquery.js
     my.js

以上功能位于my.js console.log范围内,并将其包含在index.html内。