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

标签 javascript jquery cdn

如果从 CDN 加载 jQuery ...

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

...如果网站是 HTTPS,则它将被接受(阻止加载混合事件内容“http://ajax.googleapis.com/ajax/...)。

<小时/>

解决方案似乎是:

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

事实上,如果网站是 HTTP 或 HTTPS,它就可以工作。 但是当在本地处理文件时(即浏览硬盘上的文件),则 jQuery 不会使用此解决方案加载。

<小时/>

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

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

最佳答案

一般来说,使用 file:// URL 测试网页是一个坏主意,我不会费心去支持它。相反,使用本地网络服务器进行测试更有意义。

但如果您打算支持它,则需要检查 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>

如果不是 file:,则使用页面协议(protocol)(http:https: 等),并使用 http: 如果是file:

关于javascript - 包括来自 CDN 和本地浏览的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27457486/

相关文章:

security - 如何防止在 Cloudflare 上暴露源 IP 地址?

javascript - jQuery on ("click") 在 $(window).on ('hashchange' 之后不工作并清空 main div

javascript - 未捕获的 TypeError : *. watch 不是一个函数(FireFox 除外)

javascript - 继承对象

jquery - Datepicker 仅适用于两位数的输入

javascript - 如果满足某些条件,如何在不调用模态的情况下先调用类?

google-cloud-platform - 如何检查最新的 Cloud Run 修订版是否已准备好提供服务

javascript - 当页面在浏览器上运行时,在线 cdnjs 脚本未附加(加载)

javascript - Material UI/React 错误

javascript - 为什么我不能将 js promise resolve 包装在 jquery 对象中?