使用Javascript获取当前域名(不是path等)
我计划为同一个网站购买两个域名。 根据使用哪个域,我打算在页面上提供稍微不同的数据。 有没有办法让我检测页面加载的实际域名,以便知道如何更改我的内容?
我已经四处寻找像这样的东西,但大部分不按我想要的方式工作。
例如使用时
document.write(document.location)
在JSFiddle它返回
http://fiddle.jshell.net/_display/
即实际的path或任何东西。
怎么样:
window.location.hostname
location
对象实际上有一些引用URL的不同部分的属性
如果您对主机名(例如www.beta.example.com
)不感兴趣,但对域名(例如example.com
)不感兴趣,则适用于有效的主机名:
function getDomainName(hostName) { return hostName.substring(hostName.lastIndexOf(".", hostName.lastIndexOf(".") - 1) + 1); }
function getDomain(url, subdomain) { subdomain = subdomain || false; url = url.replace(/(https?:\/\/)?(www.)?/i, ''); if (!subdomain) { url = url.split('.'); url = url.slice(url.length - 2).join('.'); } if (url.indexOf('/') !== -1) { return url.split('/')[0]; } return url; }
例子
- getDomain(' http://www.example.com '); // example.com
- getDomain( 'www.example.com'); // example.com
- getDomain(' http: //blog.example.com',true); // blog.example.com
- getDomain(location.href); // …
以前的版本正在获得完整的域名(包括子域名)。 现在它根据偏好确定正确的域。 因此,当第二个参数被提供为true时,它将包括子域,否则它只返回“主域”
使用
document.write(document.location.hostname)
window.location
有一堆属性。 看到这里的列表。
如果您只对域名感兴趣,并且想要忽略该子域,则需要将其parsing为host
hostname
和hostname
。
下面的代码是这样的:
var firstDot = window.location.hostname.indexOf('.'); var tld = ".net"; var isSubdomain = firstDot < window.location.hostname.indexOf(tld); var domain; if (isSubdomain) { domain = window.location.hostname.substring(firstDot == -1 ? 0 : firstDot + 1); } else { domain = window.location.hostname; }
由于这个问题要求域名, 而不是主机名称,正确的答案应该是
window.location.hostname.split('.').slice(-2).join('.')
这也适用于像www.example.com这样的主机名。
如果你想要一个完整的域名来源,你可以使用这个:
document.location.origin
如果你只想得到域名,可以使用这个:
document.location.hostname
但是你有其他的select,看看下面的属性:
document.location
你可以很容易地从Javascript中的位置对象获取它:
例如这个页面的URL是:
http://www.stackoverflow.com/questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc
然后我们可以得到具有以下位置对象属性的确切域:
location.host = "www.stackoverflow.com" location.protocol= "http:"
您可以使用以下方式创build完整的域:
location.protocol + "//" + location.host
在这个例子中返回http://www.stackoverflow.com
除此之外,我们可以得到完整的URL以及位置对象的其他属性的path:
location.href= "http://www.stackoverflow.com/questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc" location.pathname= "questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc"
如果您想在JavaScript中获取域名,只需使用以下代码:
var domain_name = document.location.hostname; alert(domain_name);
如果您需要网页urlpath,以便您可以访问urlpath,请使用以下示例:
var url = document.URL; alert(url);
或者你可以看到这个指南
我觉得它应该像这样简单:
url.split("/")[2]