If I have a hostname such as: http://sample.example.com and in Javascript I do window.location.hostname
, would I get "example.com" or "sample.example.com"?
If not, how would I be able to get sample.example.com?
If I have a hostname such as: http://sample.example.com and in Javascript I do window.location.hostname
, would I get "example.com" or "sample.example.com"?
If not, how would I be able to get sample.example.com?
Yes, window.location.hostname
will give you subdomains as well. If this isn't working, or isn't supported by some other browser, you could quite easily parse for it:
// window.location.href == "http://sample.somedomain.com/somedir/somepage.html"
var domain = /:\/\/([^\/]+)/.exec(window.location.href)[1];
This does the trick for me:
var host = window.location.host
var subdomain = host.split('.')[0]
I know this is an old question but a more robust answer would be to capture all subdomains. It's possible to have nested subdomains such as https://my.company.website.com
. In order to adequately capture all subdomains, I think this is the simplest answer:
// for https://my.company.website.com,
const subdomain = window.location.hostname.split('.').slice(0, -2).join('.');
console.log(subdomain); // "my.company"
It can be done as below:
var subdomain = window.location.host.split('.')[1] ? window.location.host.split('.')[0] : false;
const subdomain = window.location.hostname.split(".")[0]
window.location.hostname return string include subdomain - main domain - ltd
so you can easily get the first word by converting it to an array then getting first item
First of all, it's window.location
, not document.location
(document.location
works in some browsers but it is not standard)
And yes, location.hostname
will return the entire domain name, including any subdomains
Read more here
Yes alert(window.location.hostname) will include subdomains like 'www' and 'sample'.
How about this snippet. It might help:
var a = new String(window.location);
a = a.replace('http://','');
a = a.substring(0, a.indexOf('/'));
alert(a);
with array destructuring you can do this:
// window.location.host = "meta.stackoverflow.com"
const [ , , subdomain] = window.location.hostname.split(".").reverse();
// console.log(subdomain);
// "meta"
I recommend using the npm package psl (Public Suffix List). You can look this link: npm psl
subdomain.maindomain.extension
// Print Subdomain
console.log(window.location.host.split('.')[0]);
// Print Maindomain
console.log(window.location.host.split('.')[1]);
// Print extension
console.log(window.location.host.split('.')[2]);
Subdomain could have dots, splitting with dot is not valid. You can check this library https://www.npmjs.com/package/psl
These are valid subdomains.
www.example.com
www.foo.example.com
foo.bar.example.com
You can check it in your local machine if you have a server. This is working in my app http://dev.test.foo.localhost:3000