Fre*_*nöw 201 javascript domain-name
我打算为同一个网站购买两个域名.根据使用的域名,我计划在页面上提供略有不同的数据.有没有办法让我检测页面加载的实际域名,以便我知道要将内容更改为什么?
我一直在寻找这样的东西,但大多数都没有按照我想要的方式工作.
例如在使用时
document.write(document.location)
Run Code Online (Sandbox Code Playgroud)
在JSFiddle上它返回
http://fiddle.jshell.net/_display/
即实际路径或其他任何路径.
Gar*_*eth 395
怎么样:
window.location.hostname
Run Code Online (Sandbox Code Playgroud)
该location对象实际上具有许多引用URL的不同部分的属性
Sun*_*kya 52
尝试在脚本中运行:路径:http:// localhost:4200 / landing?query = 1#2
console.log(window.location.hash)
Run Code Online (Sandbox Code Playgroud)
位置具有以下值:
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"
Run Code Online (Sandbox Code Playgroud)
cpr*_*ack 22
如果您对主机名(例如www.beta.example.com)不感兴趣,但在域名(例如example.com)中,则适用于有效的主机名:
function getDomainName(hostName)
{
return hostName.substring(hostName.lastIndexOf(".", hostName.lastIndexOf(".") - 1) + 1);
}
Run Code Online (Sandbox Code Playgroud)
Dan*_*ein 17
window.location.hostname是一个好的开始。但它包含您可能想要删除的子域。例如,如果主机名是www.example.com,您可能只需要该example.com位。
与以往一样,有些极端情况会导致这个问题变得棘手,例如bbc.co.uk。以下正则表达式对我来说效果很好:
let hostname = window.location.hostname;
// remove any subdomains, e.g. www.example.com -> example.com
let domain = hostname.match(/^(?:.*?\.)?([a-zA-Z0-9\-_]{3,}\.(?:\w{2,8}|\w{2,4}\.\w{2,4}))$/)[1];
console.log("domain: ", domain);Run Code Online (Sandbox Code Playgroud)
ade*_*neu 16
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;
}
Run Code Online (Sandbox Code Playgroud)
例子
以前的版本获得了完整的域名(包括子域名).现在它根据偏好确定正确的域.因此,当第二个参数提供为true时,它将包含子域,否则它只返回"主域"
Ima*_*ghi 10
您可以轻松地从Javascript中的位置对象获取它:
例如,此页面的URL是:
http://www.stackoverflow.com/questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc
Run Code Online (Sandbox Code Playgroud)
然后我们可以使用location对象的以下属性获取确切的域:
location.host = "www.stackoverflow.com"
location.protocol= "http:"
Run Code Online (Sandbox Code Playgroud)
你可以用以下内容制作完整的域名:
location.protocol + "//" + location.host
Run Code Online (Sandbox Code Playgroud)
在此示例中返回 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"
Run Code Online (Sandbox Code Playgroud)
如果您只对域名感兴趣并想要忽略子域,那么您需要解析它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;
}
Run Code Online (Sandbox Code Playgroud)
使用
document.write(document.location.hostname)?
Run Code Online (Sandbox Code Playgroud)
window.location有很多属性.请参阅此处获取它们的列表.
由于此问题要求提供域名而不是主机名,因此应提供正确答案
window.location.hostname.split('.').slice(-2).join('.')
Run Code Online (Sandbox Code Playgroud)
这也适用于主机名,例如www.example.com。
如果你想在JavaScript中获取域名,只需使用以下代码:
var domain_name = document.location.hostname;
alert(domain_name);
Run Code Online (Sandbox Code Playgroud)
如果您需要网页 URL 路径以便可以访问 Web URL 路径,请使用以下示例:
var url = document.URL;
alert(url);
Run Code Online (Sandbox Code Playgroud)
如果您希望获得完整的域名,可以使用以下命令:
document.location.origin
Run Code Online (Sandbox Code Playgroud)
如果您只想获得域名,请使用以下内容:
document.location.hostname
Run Code Online (Sandbox Code Playgroud)
但是您还有其他选择,请查看以下属性:
document.location
Run Code Online (Sandbox Code Playgroud)
小智 5
这个功能怎么样?
window.location.hostname.match(/\w*\.\w*$/gi)[0]
Run Code Online (Sandbox Code Playgroud)
这将只匹配域名,无论它是子域还是主域