将参数传递到 JavaScript 文件

2022-08-30 01:31:54

通常我会有一个我想使用的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();

然后搜索我的值。

我想知道是否有另一种方法可以做到这一点,而无需构建一个函数来解析我的字符串。

你们都知道其他方法吗?


答案 1

如果可能的话,我建议不要使用全局变量。使用命名空间和 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>

答案 2

您可以传递具有任意属性的参数。这适用于所有最近的浏览器。

<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

...等。。。