<img src="//lvtao.net/img/logo.png">
引用CDN的JS、CSS文件时使用双斜杠//开头的原因

引用CDN的JS、CSS文件时使用双斜杠//开头的原因

img 中的url是以双斜杠“//”开头的,这种写法有特殊的用途,它会判断当前的页面协议是http 还是 https 来决定请求 url
的协议。防止IE下出现“This Page Contains Both Secure and Non-Secure Items”的报错。

但是当你浏览本地文件的时候,它会解析为 file:// 协议。这种特性可以用来加载CDN:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>

也适用于CSS:

.omgomg { background: url(//lvtao.net/lvtao.gif); }

注意:如果在IE7,IE8中使用 <link> 和 @import 引入 CSS 的时候,会下载两次 CSS 文件。

http?https?相对协议?

从目前的使用量上来说,http 协议仍然是主流,但是越来越多的站长、公司开始采用 https 协议了。

针对目前的情况,一般将引用协议设置为“相对协议”,也就是链接以 // 开头,前面去掉了 http:https: 字样,这样做的好处是浏览器能够根据你的网站所采用的协议来加载 文件。

例如:你的网站用的是 https 协议,那么加载 Bootstrap 的 CSS 文件//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css 时,浏览器就会自动通过 https 协议加载这个文件,也就是等效于https://cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css

所以,对于广大用户来说,我们建议采用“相对协议”,这样无论今后是采用 http 还是 https 协议,都不用再次修改文件的链接地址了。

注意:由于“相对协议”的相对特性,对于本地文件的访问就有一个“坑”:比如,你在电脑上保存了一个 index.html 的页面,这个页面中以相对特性引用了 某个文件,某天你想看一下这个文件的话,直接拖拽到浏览器里,发现引用的文件无法加载的!!!其实,这就是相对协议的特性了,因为你浏览本地文件时,浏览器采用的是 file: 协议,所以浏览器将以 file: 协议来加载文件了,这当然就找不到了。
参考: