使用Javascript获取当前域名(而不是路径等)

2020/10/08 16:41 · javascript ·  · 0评论

我计划为同一网站购买两个域名。根据使用的域,我计划在页面上提供略有不同的数据。我有什么方法可以检测页面从中加载的实际域名,以便我知道将内容更改为什么?

我到处寻找这样的东西,但大多数都无法达到我想要的方式。

例如当使用

document.write(document.location)

JSFiddle上它返回

http://fiddle.jshell.net/_display/

即实际路径或其他。

怎么样:

window.location.hostname

location对象实际上具有许多引用URL不同部分的属性

尝试在脚本中运行:路径: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);
}
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时,它将包含子域,否则仅返回“主域”

您可以轻松地从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"

document.write(document.location.hostname)​

window.location有很多特性。请参阅此处以获取它们的列表。

如果您只对域名感兴趣,并且想忽略该子域,则需要从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;
}

http://jsfiddle.net/5U366/4/

由于此问题要求提供域名而不是主机名,因此应提供正确答案

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]

这将仅匹配域名,而不管它是子域名还是主域名

如果要在JavaScript中获取域名,只需使用以下代码:

var domain_name = document.location.hostname;
alert(domain_name);

如果需要网页URL路径,以便可以访问Web URL路径,请使用以下示例:

var url = document.URL;
alert(url);

就我而言,最匹配的是window.location.origin

我是JavaScript新手,但您不能只使用:document.domain吗?

例:

<p id="ourdomain"></p>

<script>
var domainstring = document.domain;
document.getElementById("ourdomain").innerHTML = (domainstring);
</script>

输出:

domain.com

要么

www.domain.com

取决于您在网站上使用的内容。

结合以上的几个答案,以下内容对于我销毁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.comreturning .example.com=>),从而可以设置和销毁跨域Cookie。

我认为它应该像这样简单:

url.split("/")[2]

如果您想要国家/地区域名-例如,  从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

确实为我工作,但我不能使用PHP

刚刚测试了它的工作原理,这要归功于上面在某些答案中提到的方法,如此快速且经过验证就可以了

本文地址:http://javascript.askforanswer.com/shiyongjavascripthuoqudangqianyumingerbushilujingdeng.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!