現在実行中の JavaScript をロードしたページと同じスキーム (おそらく "http:" または "https:") で URL を構築したいと考えています。最新のブラウザーは、スキーム (たとえば、src="//example.com/test.js"
) の省略のみをサポートしていますが、これはブラウザー間の完全な互換性はありません。(IE 6 はそれをサポートしていない唯一のブラウザーであると読みましたが、それでもそのバージョンとの互換性が必要です。)
これを行うクロスブラウザの方法は、チェックすることのようlocation.protocol
です。たとえば、Google アナリティクスでは以下を使用します。
('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + ...
Google の場合、要求が SSL を使用するかどうかに応じて異なるドメインを使用したかったため、そのパターンは理にかなっています。しかし、プロトコルだけが異なる場合でも、他の人が同じパターンを使用しているのを見てきました。
('https:' == location.protocol ? 'https:' : 'http:') + "//example.com"
(一例はhttp://css-tricks.com/thinking-async/の「Wufoo の最終スニペット」にあります。)
代わりに、このより単純な式を使用したいと思います。
location.protocol + "//example.com"
location.protocol
自分が管理していないサイトで自分のコードが使用されている場合に、「https:」または「http:」以外の値が取得される可能性について本当に心配する必要がありますか?