Zum Beispiel verwendet Google Analytics document.location.protocol im Boilerplate zur Verfolgung:
<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>
Anstatt von
<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>
Die ssl. Subdomain ist ein stummes Argument, da https://www.google-analytics.com/ga.js einwandfrei funktioniert.
Google zu kennen, ist höchstwahrscheinlich kein Versehen. Gibt es ein Problem mit bestimmten Browsern, die das // Protokoll zur Unterstützung der Kurzform nicht unterstützen, oder fehlt mir noch etwas?
BEARBEITEN: Dies gilt nicht nur für Google Analytics (anderes Subdomain-Beispiel). Dasselbe wird auf der Font Loader-API-Seite angezeigt :
wf.src = ('https:' == document.location.protocol ? 'https' : 'http') +
'://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
javascript
google-analytics
https
Metallhai
quelle
quelle
Antworten:
In der Tat war es kein Versehen des GA-Teams!
Der GA-Loader lädt ein Skript, sodass der Fehler beim doppelten Herunterladen auf einem
<link>
oder@import
für Stylesheets in IE7 / IE8 nicht betroffen ist .Sie verwenden den bedingten (ternären) Operator
document.location.protocol
aufgrund eines Edge-Case-Fehlers in IE6, der dazu führt, dass unter bestimmten Sicherheitseinstellungen ein Sicherheitsdialog angezeigt wird, wenn eine Anforderung von der Nicht-SSL-Subdomain angefordert wird , wie von Paul Irish (der gearbeitet hat) erläutert zusammen mit dem Javascript-Hauptentwickler von Google Analytics in dieser Angelegenheit) in seinem Blog: https://www.paulirish.com/2010/the-protocol-relative-url/, aus dem ich unten zitiere:quelle
Mindestens ein Problem im IE, da es doppelte Downloads verursacht: http://www.stevesouders.com/blog/2010/02/10/5a-missing-schema-double-download/
quelle
Sie haben bereits den Unterschied im Fall von Google Analytics nämlich darauf hingewiesen, dass die sichere Version ist auf
https://ssl.
statthttp://www.
. Während eine sichere Version des WWW möglicherweise funktioniert, kann sie sich auch von der SSL-Version unterscheiden:Ich weiß jedoch nicht, ob dies für Google gilt. Auf den ersten Blick schien der Code der gleiche zu sein.
quelle
//
Protokoll nicht erkennen ?Diese Stapelüberlauf- Antwort macht einige gute Punkte.
Es wäre wichtig, das Protokoll explizit anzugeben, damit das Ziel-Asset korrekt in ein Dokument geladen wird, das von einem lokalen Laufwerk (
file:
) oder bei Verwendung von "iframe magic" (about:
) geöffnet wurde .quelle
//www.google-analytics.com/ga.js
ist keine URL gemäß ihrem Standard, da ihm das obligatorische Schema fehlt. Es funktioniert und wird verwendet, entspricht jedoch nicht dem URL-Standard.Siehe RFC3986 §3:
quelle