我正在尝试将jquery加载到可能有或没有jquery的页面上。我只是使用typeof来确定它是否已加载。我的问题是,我想检查一下,看看它是否已经从我的CDN加载后加载了。这样,如果我的CDN失败,我可以回到谷歌,以确保代码仍然加载。到目前为止,我实现这一目标的唯一方法是我必须使用两个不同的Javascript文件。我没有得到任何控制台错误。所以为了测试我改变了我的CDN的URL,这样它就不会工作,它会加载所有四行代码。它永远不会看到第一个条件被加载。如何在我的第一个条件语句之后检查jQuery是否成功加载?
if (typeof jQuery == 'undefined') {
document.write("<script type=\"text\/javascript\" src=\"http:\/\/mysite\/scripts\/jquery-1.8.3.min.js\"><\/script>");
document.write("<script type=\"text\/javascript\" src=\"http:\/\/mysite\/scripts\/jquery-ui-1.9.2.min.js\"><\/script>");
}
if (typeof jQuery == 'undefined') {
document.write("<script type=\"text\/javascript\" src=\"http:\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/1.8.3\/jquery.min.js\"><\/script>");
document.write("<script type=\"text\/javascript\" src=\"http:\/\/ajax.googleapis.com\/ajax\/libs\/jqueryui\/1.9.2\/jquery-ui.min.js\"><\/script>");
}
答案 0 :(得分:2)
您需要将脚本作为单独的<script>
元素执行。第一个是从CDN添加jQuery,如果它还没有在页面上。 document.write
调用将在稍后调用<script>
之前注入新 window.jQuery || ...
元素,因此如果CDN已启动,则会加载jQuery。
如果CDN出现故障,仍然无法定义jQuery,因此可能会使用本地回退:
<script>
//add jQuery if it doesn't exist on the page yet
window.jQuery || document.write('<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"><\/script>');
</script>
<script>
//add jQuery if the CDN happens to be down
window.jQuery || document.write('<script src="/scripts/jquery-1.8.3.min.js"><\/script>');
</script>
答案 1 :(得分:0)
可能是您正在寻找的,适应您的需求:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
window.jQuery || document.write('<script src="mylocalPath/jquery.js"><\/script>')
</script>