包括来自CDN和本地浏览的库

时间:2014-12-13 09:42:08

标签: javascript jquery cdn

如果从CDN加载jQuery ...

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/...

...如果网站是HTTPS(Blocked loading mixed active content "http://ajax.googleapis.com/ajax/...),则将被接受。


解决方案似乎是:

<script type="text/javascript" src="//ajax.googleapis.com/ajax/...

如果网站是HTTP或HTTPS,它将起作用。 但是当在本地处理文件(即浏览我硬盘上的文件)时,jQuery没有加载此解决方案。


这对我很重要,下载my GitHub project的人将能够在本地进行测试。

如何使用CDN正确包含jQuery,并能够在本地浏览HTML文件?

3 个答案:

答案 0 :(得分:2)

通常,使用file://网址测试网页是一个坏主意,我不愿意支持它。相反,使用本地网络服务器进行测试更有意义。

但如果您打算支持它,则需要对location.protocol进行检查:

<script>
(function() {
    var protocol = location.protocol === "file:" ? "http:" : location.protocol;
    document.write('<script src="' + protocol + '//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"><\/script>');
})();
</script>

或者如果你正在做一个XHTML页面(或者只是不喜欢document.write):

<script>
(function() {
    var protocol = location.protocol === "file:" ? "http:" : location.protocol;
    var script = document.createElement('script');
    script.src = protocol + '//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js';
    document.getElementsByTagName("script")[0].parentNode.appendChild(script);
})();
</script>

如果它不是http:,则使用页面的协议(https:file:,等等),如果是http:,则使用file:。< / p>

答案 1 :(得分:1)

我一直尝试使用HTTPS:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/...

似乎有效:

  1. 从本地浏览HTML页面(file://

  2. 来自HTML页面的http浏览

  3. 来自https浏览HTML页面

答案 2 :(得分:-1)

从HTML5 Boilerplate,在您的CDN脚本后添加:

<script>window.jQuery || document.write('<script src="/path/to/local/jquery.js"><\/script>')</script>