我正在寻找一种在外部.js文件中发布变量的方法。
类似的东西:
<script type="text/javascript" src="/js/script-starter.js?var=value"></script>
然后我想调用var(因此,值)。这有可能吗?
谢谢!
答案 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
内。