我正在寻找一种在外部 .js 文件中发布变量的方法。
就像是:
<script type="text/javascript" src="/js/script-starter.js?var=value"></script>
然后我想调用 var (因此,值)。这有可能吗?
谢谢!
我正在寻找一种在外部 .js 文件中发布变量的方法。
就像是:
<script type="text/javascript" src="/js/script-starter.js?var=value"></script>
然后我想调用 var (因此,值)。这有可能吗?
谢谢!
是的,有可能。您必须使用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
属性的解析和从中提取查询字符串值而言,您可以使用以下函数。
如果该脚本是接收查询字符串中的变量并返回 javascript 代码作为输出的服务器端脚本,则它可能是可能的
如何在脚本文件加载之前声明变量:
<script type="text/javascript">var myVar = "Value"</script>
<script type="text/javascript" src="/js/script-starter.js"></script>
所以你可以在你的脚本中使用这个变量。这可能是最简单的方法之一。
为什么不将变量放在隐藏的 a 或 p 中
<a id="myHiddenVar" style="display:none;">variables</a>
然后在您的 .js 中使用
var obj = document.getElementById("myHiddenVar").innerHTML;
或 jQuery 风格
var obj = $("#myHiddenVar").text();
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.js
with内console.log
并将其包含在index.html
.