Por exemplo, o Google Analytics usa document.location.protocol no padrão para rastreamento:
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
ao invés de
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = '//www.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
O ssl. subdomínio é um argumento mudo, pois https://www.google-analytics.com/ga.js funciona perfeitamente bem.
Conhecer o Google com maior probabilidade não é um descuido. Existe algum problema com certos navegadores que não suportam o protocolo // que honra a taquigrafia ou há algo mais que estou faltando?
EDIT: isso não se aplica apenas ao Google Analytics (exemplo de subdomínio diferente). O mesmo aparece na página da API do carregador de fontes :
wf.src = ('https:' == document.location.protocol ? 'https' : 'http') +
'://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
javascript
google-analytics
https
Metalshark
fonte
fonte
Respostas:
Na verdade, não foi uma supervisão da equipe do GA!
O carregador do GA carrega um script, para que não seja afetado pelo bug de download duplo em uma
<link>
ou@import
para uma folha de estilo no IE7 / IE8.Eles usam o operador condicional (ternário)
document.location.protocol
devido a um erro de borda no IE6 que faz com que um diálogo de segurança apareça sob certas configurações de segurança ao solicitar o subdomínio não 'ssl' , conforme explicado por Paul Irish (que trabalhou juntamente com o desenvolvedor líder de javascript do Google Analytics sobre esse assunto) em seu blog: https://www.paulirish.com/2010/the-protocol-relative-url/, do qual cito abaixo:fonte
Há pelo menos um problema no IE porque causa downloads duplos: http://www.stevesouders.com/blog/2010/02/10/5a-missing-schema-double-download/
fonte
Você já apontou a diferença no caso do Google Analytics, ou seja, a versão segura está
https://ssl.
ativada em vez dehttp://www.
. Embora uma versão segura do www possa funcionar, também pode ser diferente da versão ssl:Não sei se algum deles se aplica ao Google. À primeira vista, o código parecia o mesmo.
fonte
//
protocolo?Esta resposta de estouro de pilha faz alguns bons pontos.
Seria importante especificar explicitamente o protocolo para que o ativo de destino seja carregado corretamente em um documento aberto a partir de uma unidade local (
file:
) ou ao usar "iframe magic" (about:
).fonte
//www.google-analytics.com/ga.js
não é um URL de acordo com seu padrão, pois não possui o esquema, o que é obrigatório. Ele funciona e é usado, mas permanece não conforme com o padrão de URL.Veja RFC3986 §3:
fonte