C'est l'emplacement.protocole jamais invalide?

Je veux construire des URLs avec le même schéma (sans doute, "http" ou "https:") que la page qui a chargé le cours d'exécution JavaScript. Les navigateurs modernes soutien simplement en omettant le schéma (par exemple, src="//example.com/test.js"), mais ce n'est pas entièrement compatible avec tous les navigateurs. (J'ai lu que IE 6 est le seul navigateur qui ne prend pas en charge, mais j'ai encore besoin de compatibilité avec cette version.)

La croix-navigateur façon de faire semble être de vérifier location.protocol. Par exemple, Google Analytics utilise des:

('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + ...

Dans le cas de Google, ils ont voulu utiliser des domaines différents selon que la demande qui utilise le protocole SSL, de sorte que le motif de sens. Mais j'ai vu que d'autres utilisent le même modèle, même lorsque seul le protocole est différent:

('https:' == location.protocol ? 'https:' : 'http:') + "//example.com"

(Un exemple est dans le "Final Wufoo Extrait de" au http://css-tricks.com/thinking-async/.)

Je préfère utiliser ce plus simple expression à la place:

location.protocol + "//example.com"

Dois-je vraiment être préoccupé par la possibilité de location.protocol prendre sur une valeur autre que "https:" ou de la "http:" quand mon code est utilisé sur les sites je ne les contrôle pas?

OriginalL'auteur Jamey Sharp | 2012-11-03