drt*_*drt 5 javascript https network-protocols
离开http似乎使它使用HTTP进行连接,但我没有启用HTTPS的站点来测试它是否也适用于HTTPS.
使用//www.example.com/test.js是否会根据主文档的协议自动选择协议?
http://paulirish.com/2010/the-protocol-relative-url/
有一篇关于这个问题的好文章。包括在这里:
2010 年 10 月 27 日
作者:保罗爱尔兰
有一个小技巧你可以摆脱它,它可以为你省去一些麻烦:
<img src="//domain.com/img/logo.png">
Run Code Online (Sandbox Code Playgroud)
如果浏览器正在通过 HTTPS 查看当前页面,那么它将使用 HTTPS 协议请求该资产,否则它通常会*使用 HTTP 请求它。这可以防止 IE 中出现可怕的“此页面包含安全和非安全项目”错误消息,将所有资产请求保持在同一协议中。
*当然,如果您在本地查看文件,它会尝试使用 file:// 协议请求文件。
我们在 HTML5 Boilerplate 中使用这个技巧从 Google CDN 中巧妙地请求 jQuery:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
<script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.4.2.js"%3E%3C/script%3E'))</script>
Run Code Online (Sandbox Code Playgroud)
从技术上讲,根据 RFC 3986,这称为“网络路径参考”。哦,如果您想真正正确,在谈论 URL 时将使用术语“方案”而不是“协议”。
这个技巧在 CSS 中也能正常工作:
.omgomg { background: url(//websbestgifs.net/kittyonadolphin.gif); }
Run Code Online (Sandbox Code Playgroud)
...假设您指向的站点在 HTTP 和 HTTPS 上都可以使用此资产。
警告:当用于<link>或@import样式表时,IE7 和 IE8 会下载该文件两次。但是,所有其他用途都很好。
感谢 miketaylr、ralphholzmann、annevk 和 ajaxian,我想我是在 4 年前从那里学到的?也许?
2011.01.23:但是……在谷歌分析片段上使用这个怎么样?是的,当然,那不是很好。所以我与 Google Analytics javascript 首席开发人员(上帝,我喜欢在 google 工作)一起工作,看看我们是否可以做到这一点......结果我们不能。在 IE6 中有一个边缘情况错误,它会导致对话框爆炸……在某些安全设置下(不确定它们是否为默认设置),当请求非“ssl”子域时。截图在这里。因此,如果您不关心 IE6,请随意从您的 GA 代码段中删除 40 个字节。否则您将需要那个三元运算符。:)