Ini adalah pertanyaan yang sangat lama, tetapi berikut adalah pendekatan yang saya gunakan secara pribadi ...
Dapatkan URL Standar / Basis
Seperti yang telah banyak dinyatakan, ini berfungsi untuk sebagian besar situasi.
var url = window.location.origin;
Dapatkan URL Basis Absolut
Namun, pendekatan sederhana ini dapat digunakan untuk menghilangkan nomor port apa pun.
var url = "http://" + location.host.split(":")[0];
Sunting: Untuk mengatasi masalah ini, yang diajukan oleh Jason Rice , berikut ini dapat digunakan untuk secara otomatis memasukkan jenis protokol yang benar ...
var url = window.location.protocol + "//" + location.host.split(":")[0];
Setel URL Dasar
Sebagai bonus - URL dasar kemudian dapat didefinisikan ulang secara global.
document.head.innerHTML = document.head.innerHTML + "<base href='" + url + "' />";