我想用相同的方案(大概是「http:」或「https:」)來構造加載當前運行的JavaScript的頁面。現代瀏覽器支持簡單地省略該方案(例如,src="//example.com/test.js"
),但這不是完全跨瀏覽器兼容的。 (我讀過IE 6是唯一不支持它的瀏覽器,但我仍然需要與該版本兼容。)是否location.protocol無效?
跨瀏覽器的方式來做這個似乎是檢查location.protocol
。例如,谷歌Analytics使用:
('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + ...
在谷歌的情況下,他們想用不同的域取決於請求是否使用SSL,所以該模式纔有意義。但我已經看到即使只有協議是不同的人使用相同的模式:(。一個例子是在「最終Wufoo項目片段」在http://css-tricks.com/thinking-async/)
('https:' == location.protocol ? 'https:' : 'http:') + "//example.com"
我寧願使用這個簡單的表達,而不是:
location.protocol + "//example.com"
我應該真正關心的location.protocol
承擔比其他一些價值的可能性「https:」開頭或「HTTP:」當我的代碼的網站上用我不要管?
哦,iframe的魔術包括人們以編程方式構建一個iframe,然後從父框架的JavaScript填充它的情況嗎?現在你提到它了,雖然我可以想象'file:'或者'ftp:'不時出現,我敢打賭,iframe魔法是最常見的情況。 –
正確 - 這正是您最有可能遇到'about:'協議的地方。 – duskwuff