我经常会有一个我想要使用的JavaScript文件,它需要在我的网页中定义某些变量。
所以代码是这样的:
<script type="text/javascript" src="file.js"></script>
<script type="text/javascript">
var obj1 = "somevalue";
</script>
但我想做的是:
<script type="text/javascript"
src="file.js?obj1=somevalue&obj2=someothervalue"></script>
我尝试了不同的方法,最好的方法是像这样解析查询字符串:
var scriptSrc = document.getElementById("myscript").src.toLowerCase();
然后搜索我的值。
我想知道是否有其他方法可以做到这一点,而不是构建一个函数来解析我的字符串。
你们都知道其他方法吗?
发布于 2010-02-03 17:33:21
如果可能的话,我建议不要使用全局变量。使用名称空间和OOP将参数传递给对象。
此代码属于file.js:
var MYLIBRARY = MYLIBRARY || (function(){
var _args = {}; // private
return {
init : function(Args) {
_args = Args;
// some other initialising
},
helloWorld : function() {
alert('Hello World! -' + _args[0]);
}
};
}());
在您的html文件中:
<script type="text/javascript" src="file.js"></script>
<script type="text/javascript">
MYLIBRARY.init(["somevalue", 1, "controlId"]);
MYLIBRARY.helloWorld();
</script>
发布于 2013-02-25 22:28:41
您可以传递具有任意属性的参数。这在所有最新的浏览器中都有效。
<script type="text/javascript" data-my_var_1="some_val_1" data-my_var_2="some_val_2" src="/js/somefile.js"></script>
在somefile.js中,您可以这样获得传递的变量值:
.
var this_js_script = $('script[src*=somefile]'); // or better regexp to get the file name..
var my_var_1 = this_js_script.attr('data-my_var_1');
if (typeof my_var_1 === "undefined" ) {
var my_var_1 = 'some_default_value';
}
alert(my_var_1); // to view the variable value
var my_var_2 = this_js_script.attr('data-my_var_2');
if (typeof my_var_2 === "undefined" ) {
var my_var_2 = 'some_default_value';
}
alert(my_var_2); // to view the variable value
...etc...
发布于 2013-07-16 21:21:48
我遇到的另一个想法是为<script>
元素分配一个id
,并将参数作为data-*
属性传递。生成的<script>
标记将如下所示:
<script id="helper" data-name="helper" src="helper.js"></script>
然后,脚本可以使用该id以编程方式定位自身并解析参数。给定前面的<script>
标记,可以像这样检索名称:
var name = document.getElementById("helper").getAttribute("data-name");
我们得到name
= helper
https://stackoverflow.com/questions/2190801
复制相似问题