Por ejemplo, Google Analytics utiliza document.location.protocol en la plantilla para el seguimiento:
<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>
en vez 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>
El ssl. El subdominio es un argumento mudo ya que https://www.google-analytics.com/ga.js funciona perfectamente bien.
Conocer Google probablemente no es un descuido. ¿Hay algún problema con ciertos navegadores que no admiten el // protocolo que honra la taquigrafía o hay algo más que me falta?
EDITAR: Esto no solo se aplica a Google Analytics (ejemplo de subdominio diferente). Lo mismo aparece en la página API de Font Loader :
wf.src = ('https:' == document.location.protocol ? 'https' : 'http') +
'://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
javascript
google-analytics
https
Metalshark
fuente
fuente
Respuestas:
De hecho, ¡no fue un descuido del equipo de GA!
El cargador GA carga un script, por lo que no se ve afectado por el error de doble descarga en una
<link>
o@import
para hojas de estilo en IE7 / IE8.Utilizan el operador condicional (ternario)
document.location.protocol
debido a un error de caso perimetral en IE6 que hace que aparezca un cuadro de diálogo de seguridad bajo ciertas configuraciones de seguridad cuando se solicita desde el subdominio no'ssl ' , como explicó Paul Irish (quien trabajó junto con el desarrollador principal de JavaScript de Google Analytics sobre este tema) en su blog: https://www.paulirish.com/2010/the-protocol-relative-url/ del cual cito a continuación:fuente
Al menos tiene un problema en IE porque causa descargas dobles: http://www.stevesouders.com/blog/2010/02/10/5a-missing-schema-double-download/
fuente
Ya señaló la diferencia en el caso de Google Analytics, es decir, que la versión segura está
https://ssl.
activada en lugar dehttp://www.
. Si bien una versión segura de www puede funcionar, también podría ser diferente a la versión SSL:Sin embargo, no sé si alguno de estos se aplica a Google. De un vistazo, el código parecía ser el mismo.
fuente
//
protocolo?Esta respuesta de desbordamiento de pila hace algunos buenos puntos.
Sería importante especificar explícitamente el protocolo para que el activo de destino se cargue correctamente dentro de un documento abierto desde una unidad local (
file:
) o cuando se utiliza "magia iframe" (about:
).fuente
//www.google-analytics.com/ga.js
no es una URL según su estándar, ya que carece del esquema, que es obligatorio. Funciona y se usa, pero sigue sin cumplir con el estándar URL.Ver RFC3986 §3:
fuente