Odpowiedzi:
var host = window.location.hostname;
lub ewentualnie
var host = "http://"+window.location.hostname;
lub jeśli lubisz konkatenację
var protocol = location.protocol;
var slashes = protocol.concat("//");
var host = slashes.concat(window.location.hostname);
http. Użyj protokołu względnego. Może być bardziej odpowiednie niż kodowanie na stałe.
concat. W przykładzie var a = 1 + 2 + " should be 12";vs wersja konkat tego var a = "".concat(1).concat(2).concat(" should be 12");. Korzystanie z konkat pozwoli ci zaoszczędzić wiele problemów +związanych z obliczeniami, a nie konkatenacją.
hostnamepoda tylko domenę i hostzapewni również port. To świetne mini narzędzie do obejrzenia anatomii linków bl.ocks.org/abernier/3070589
Aby uzyskać nazwę hosta: location.hostname
Ale twój przykład również szuka schematu, więc location.originwydaje się robić to, co chcesz w Chrome, ale nie pojawia się w dokumentach Mozdeva. Możesz to zbudować za pomocą
location.protocol + '//' + location.hostname
Jeśli chcesz również numer portu (jeśli nie jest to 80), to:
location.protocol + '//' + location.host
Możesz uzyskać protokół, host i port, używając tego:
window.location.origin
| Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|----------------------------------|-------|-----------------|-------------------|-------|--------------------------------------------|
| (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
| 30.0.1599.101 (possibly earlier) | ? | 21.0 (21.0) | 11 | ? | 7 (possibly earlier, see webkit bug 46558) |
| Android | Edge | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
|----------------------------------|-------|------------------------|----------|--------------|--------------------------------------------|
| (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
| 30.0.1599.101 (possibly earlier) | ? | 21.0 (21.0) | ? | ? | 7 (possibly earlier, see webkit bug 46558) |
Cała kompatybilność przeglądarki pochodzi z Mozilla Developer Network
let path = window.location.protocol + '//' + window.location.hostname + ':' + window.location.port;
W zależności od potrzeb możesz użyć jednej z window.locationwłaściwości. W swoim pytaniu pytasz o hosta , który można odzyskać za pomocą window.location.hostname(np www.example.com.). W twoim przykładzie pokazujesz coś, co nazywa się origin , które można odzyskać za pomocą window.location.origin(np http://www.example.com.).
var path = window.location.origin + "/";
//result = "http://localhost:60470/"
Podoba mi się ten w zależności od celu
window.location.href.split("/")[2] == "localhost:17000" //always domain + port
Możesz zastosować go na dowolnym ciągu adresu URL
var url = "http://localhost:17000/sub1/sub2/mypage.html?q=12";
url.split("/")[2] == "localhost:17000"
url.split("/")[url.split("/").length-1] == "mypage.html?q=12"
Usuwanie protokołu, domeny i ścieżki z ciągu url (ścieżka względna)
var arr = url.split("/");
if (arr.length>3)
"/" + arr.splice(3, arr.length).join("/") == "/sub1/sub2/mypage.html?q=12"