1

这就是我所拥有的:

<script src="myscript.js" type="text/javascript"></script>
<script type="text/javascript">testfunction("hello");</script>

在 myscript.js 中:

if(!window.jQuery)
{
  var script = document.createElement('script');
  script.type = "text/javascript";
  script.src = 'jquery-1.9.0.min.js';
  document.getElementsByTagName('head')[0].appendChild(script);
}

function testfunction(str) {
    $(document).ready(function () {
      alert(str);
    });
}

当然,当前的 testfunction 不需要 jQuery,但它会是必需的。使用这种方法,当调用 testfunction() ( Uncaught ReferenceError: $ is not defined )时,jQuery 被下载但没有加载到浏览器中。

我可以做的是在加载我的 JS 之前在不同的脚本中加载 jQuery。在这种情况下,它会起作用,但我会拥有三个不同的脚本,老实说,这似乎并不优雅。

有没有其他方法可以实现这一目标?

谢谢!

4

2 回答 2

3

您可能想尝试查看此答案。它可能不会等到 jQuery 完全加载。

于 2013-03-05T17:25:41.990 回答
0

使用您的代码,脚本将异步加载。您需要在脚本标记中添加一个 onload 事件,该事件将触发依赖于 jQuery 的部分。

如果您希望以同步方式加载脚本,请使用document.write

window.jQuery||document.write(unescape("%3Cscript src='"+jQueryURL+"' type='text/javascript'%3E%3C/script%3E"));

document.write技术非常常见,请记住在文档加载后您不能使用它(否则它将覆盖整个页面)。

如果您想在更大范围内使用动态加载,请查看现有的加载程序或 AMD 库。

于 2013-03-05T17:46:03.963 回答