1

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

就像是:

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

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

谢谢!

4

5 回答 5

8

是的,有可能。您必须使用document.getElementsByTagNamescript函数查找 DOM 中的所有标签(确保在尝试查找之前已加载 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属性的解析和从中提取查询字符串值而言,您可以使用以下函数

于 2012-05-07T20:31:30.243 回答
2

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

于 2012-05-07T20:32:05.717 回答
1

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

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

所以你可以在你的脚本中使用这个变量。这可能是最简单的方法之一。

于 2012-05-07T20:33:48.450 回答
0

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

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

然后在您的 .js 中使用

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

或 jQuery 风格

var obj = $("#myHiddenVar").text();
于 2012-05-07T20:33:58.057 回答
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'));

就我而言,我的应用程序文件夹结构如下:

MyApp/
     index.html
     jquery.js
     my.js

上述函数在my.jswith内console.log并将其包含在index.html.

于 2012-05-07T20:52:11.150 回答