1

我正在尝试将 jquery 加载到可能有也可能没有 jquery 的页面上。我只是使用 typeof 来确定它是否已加载。我的问题是我想在从 CDN 加载它后检查它是否已加载。这样,如果我的 CDN 失败,我可以回退到 Google 以确保代码仍然可以加载。到目前为止,我让它工作的唯一方法是我必须使用两个不同的 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>");
}
4

2 回答 2

2

您需要将脚本作为单独的<script>元素执行。如果页面上还没有 jQuery,第一个会从 CDN 添加 jQuery。该调用将在稍后调用之前document.write注入一个 元素,因此如果 CDN 已启动,它将加载 jQuery。<script>window.jQuery || ...

如果 CDN 宕机了,jQuery 仍然不会被定义,所以可以使用本地 fallback:

<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>
于 2013-04-12T14:25:37.457 回答
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>
于 2013-04-12T14:19:11.567 回答