加载jQuery如果没有加载 - 失败的方法

时间:2013-03-05 17:19:35

标签: javascript jquery html

这就是我所拥有的:

<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);
    });
}

当然测试功能当然不需要jQuery,但是需要它。使用这种方法,jQuery被下载但在调用testfunction()时没有加载到浏览器中( Uncaught ReferenceError:$未定义)。

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

还有其他方法可以达到这个目的吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

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

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

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

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