Javascript 如果Jquery未能加载,则加载它

Javascript 如果Jquery未能加载,则加载它,javascript,jquery,Javascript,Jquery,我正在尝试将jquery加载到一个可能有jquery也可能没有jquery的页面上。我只是使用typeof来确定它是否已加载。我的问题是,我想在从CDN加载后检查它是否已加载。这样,如果我的CDN失败,我可以求助于谷歌,以确保代码仍然加载。到目前为止,我唯一的方法就是使用两个不同的Javascript文件。我没有任何控制台错误。为了进行测试,我更改了CDN的URL,使其无法工作,它加载了所有四行代码。它从未看到第一个条件被加载。如何在第一条条件语句之后检查jQuery是否已成功加载 if (ty

我正在尝试将jquery加载到一个可能有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>");
}
if(typeof jQuery==“未定义”){
文件。填写(“”);
文件。填写(“”);
}
if(typeof jQuery==“未定义”){
文件。填写(“”);
文件。填写(“”);
}

可能是您正在寻找的,适合您的需要:

<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>

window.jQuery | | document.write(“”)

您需要将脚本作为单独的
元素执行。第一个添加了来自CDN的jQuery,如果它不在页面上的话。
document.write
调用将在以后调用
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>

//如果页面上还不存在jQuery,请添加它
window.jQuery | | document.write(“”);
//如果CDN发生故障,请添加jQuery
window.jQuery | | document.write(“”);

在Google上搜索,发现@alexn,不太一样,这是关于如何有条件地从CDN添加jQuery,如果页面上没有本地回退。此脚本用于许多站点的许多页面,因此它是一个外部javascript文件。因此,实现这一点的唯一方法是使用两个不同的外部脚本,正确吗?@ios85,这将在页面加载中添加两个额外的HTTP请求,并进一步降低速度。你可能应该考虑使用一些帮助加载依赖的东西。谢谢!我试图确定不使用像requirejs这样的框架是否可行。这似乎是我唯一真正的选择,因为无法确定jquery是否已加载到同一个脚本块中。我真的不想添加额外的请求。当然,没有框架也是可能的。框架必须能够以某种方式做到这一点。:)问题是复制该功能是否值得您花费时间和精力。@ios85,requirejs本身将是一个额外的请求,但它将消除大部分依赖项,这通常是值得的。您可以进行一些异步加载,但随后必须让所有后续脚本等待jQuery异步加载。