我想使用与加载当前运行的 JavaScript 的页面相同的方案(可能是“http:”或“https:”)构建 URL。现代浏览器支持简单地省略该方案(例如,src="//example.com/test.js"
),但这并不完全跨浏览器兼容。(我读过 IE 6 是唯一不支持它的浏览器,但我仍然需要与该版本兼容。)
执行此操作的跨浏览器方法似乎是检查location.protocol
. 例如,谷歌分析使用:
('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + ...
在 Google 的案例中,他们希望根据请求是否使用 SSL 来使用不同的域,因此这种模式是有意义的。但是我看到其他人使用相同的模式,即使只有协议不同:
('https:' == location.protocol ? 'https:' : 'http:') + "//example.com"
(一个例子在http://css-tricks.com/thinking-async/的“Final Wufoo Snippet”中。)
我更喜欢使用这个更简单的表达式:
location.protocol + "//example.com"
location.protocol
当我的代码在我无法控制的网站上使用时,我是否真的应该担心会出现“https:”或“http:”以外的其他值?