我计划为同一网站购买两个域名。根据使用的域,我计划在页面上提供略有不同的数据。有什么方法可以检测页面从中加载的实际域名,以便我知道将内容更改为什么?
我到处寻找这样的东西,但大多数都无法达到我想要的方式。
例如当使用
document.write(document.location)
在JSFiddle上它返回
http://fiddle.jshell.net/_display/
即实际路径或其他。
premium.random.com
和free.random.com
我计划为同一网站购买两个域名。根据使用的域,我计划在页面上提供略有不同的数据。有什么方法可以检测页面从中加载的实际域名,以便我知道将内容更改为什么?
我到处寻找这样的东西,但大多数都无法达到我想要的方式。
例如当使用
document.write(document.location)
在JSFiddle上它返回
http://fiddle.jshell.net/_display/
即实际路径或其他。
premium.random.com
和free.random.com
Answers:
window.location.hostname
如果您不想获取port
(例如和http://localhost:3000/
window.location.host = 'localhost:3000'
window.location.hostname = 'localhost'
window.location.host
有时会给端口回来。
尝试在脚本中运行:路径:http:// localhost:4200 / landing?query = 1#2
console.log(window.location.hash)
位置具有以下值:
window.location.hash: "#2"
window.location.host: "localhost:4200"
window.location.hostname: "localhost"
window.location.href: "http://localhost:4200/landing?query=1#2"
window.location.origin: "http://localhost:4200"
window.location.pathname: "/landing"
window.location.port: "4200"
window.location.protocol: "http:"
window.location.search: "?query=1"
如果您对主机名(例如www.beta.example.com
)不感兴趣,但对域名(例如example.com
)不感兴趣,则适用于有效的主机名:
function getDomainName(hostName)
{
return hostName.substring(hostName.lastIndexOf(".", hostName.lastIndexOf(".") - 1) + 1);
}
amazon.co.uk
。但绝对不是“几乎所有国际TLD”。实际上,它可与Wikipedia中找到
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;
}
例子
以前的版本已获得完整域(包括子域)。现在,它根据偏好确定正确的域。这样,当将第二个参数设置为true时,它将包含子域,否则它将仅返回“主域”
localhost/test.php
正确答案中也可以使用localhost
。
google.co.uk
,那将返回'co.uk',这是不正确的……
您可以轻松地从Javascript中的location对象获取它:
例如,此页面的URL是:
http://www.stackoverflow.com/questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc
然后,我们可以使用location对象的以下属性获取确切的域:
location.host = "www.stackoverflow.com"
location.protocol= "http:"
您可以使用以下方法制作完整域:
location.protocol + "//" + location.host
在此示例中返回 http://www.stackoverflow.com
另外,我们可以获得完整的URL以及具有location对象其他属性的路径:
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"
如果您只对域名感兴趣,并且想忽略子域,则需要从host
和中解析它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
但是您还有其他选择,请看一下其中的属性:
document.location
那这个功能呢?
window.location.hostname.match(/\w*\.\w*$/gi)[0]
这将仅匹配域名,而不管它是子域名还是主域名
就我而言,最匹配的是window.location.origin
结合上面的一些答案,以下内容对于我销毁Cookies确实非常有效:
/**
* Utility method to obtain the domain URI:
*/
fetchDomainURI() {
if (window.location.port.length > 0) {
return window.location.hostname;
}
return `.${window.location.hostname.match(/\w*\.\w*$/gi)[0]}`;
}
适用于具有端口(例如0.0.0.0:8000等)的IP地址以及复杂的域(例如app.staging.example.com
returning .example.com
=>),可以进行跨域Cookie设置和销毁。
如果您想要国家/地区域名-例如, 从stackoverflow.com中提取 .com:
(ES6):
const getCountryDomainName = () => {
let hostName = window.location.hostname;
let lastDotIndex = hostName.lastIndexOf('.');
let countryDomainName = hostName.substr(lastDotIndex+1, hostName.length);
return countryDomainName;
}
(ES5):
function getCountryDomainName() {
let hostName = window.location.hostname;
let lastDotIndex = hostName.lastIndexOf('.');
let countryDomainName = hostName.substr(lastDotIndex+1, hostName.length);
return countryDomainName;
}
然后,只需使用函数将值分配给var即可:
const countryDomainName = getCountryDomainName();
Feel free to visit our “<a href="javascript:document.location.href=document.location.origin+'/contact-us'" title="Click to Contact Us" class="coded_link" ><span class="ui-icon ui-icon-newwin"></span>Contact</a>” link