1

这是异步 javascript 的片段:

var bsa = document.createElement('script');
bsa.type = 'text/javascript';
bsa.async = true;
bsa.src = 'myfile.js';
bsa.test_var = 'HI!';
(document.getElementsByTagName('head')[0]||document.getElementsByTagName('body')[0]).appendChild(bsa);

我添加了这一行bsa.test_var = 'HI!';- 我试图将参数传递给myfile.js并打印出'test_var',但它不起作用。

在 中myfile.js,我尝试调用alert(bsa.test_var)或只是alert(test_var),但没有一个版本不起作用。

有什么方法可以传递参数吗?我想将参数传递到myfile.js并根据参数加载数据从数据库中获取适当的数据。

谢谢

4

2 回答 2

2

您不将参数传递给脚本,而是将参数传递给函数。

您将需要更改脚本,以便在调用其中的函数之前它实际上不会做任何事情,并在此时传递参数。

然后,您的问题就变成了弄清楚脚本何时完成加载的问题,这可以通过向元素对象添加.onload处理程序来完成。<script>

于 2013-02-24T12:03:37.687 回答
0

不幸的是,您不能将参数传递给脚本。

您可以使用RequireJS来加载您的脚本。当您的脚本被加载时,您会收到通知,此时您可以使用所需的自定义参数执行初始化。不需要使用 AMD 模块,但如果你这样做,你的代码结构会更好。

require('myfile.js', function (MyModule) {
    var myModule = new MyModule(customParameter);
});
于 2013-02-24T12:25:30.577 回答