V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
ihciah
V2EX  ›  JavaScript

如何用Javascript获取当前域名并输出?

  •  
  •   ihciah · 2012-05-27 12:29:39 +08:00 · 4448 次点击
    这是一个创建于 4570 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如访问者通过www.abc.com访问,就在特定位置显示b.abc.com;如果通过b.abc.com访问,就显示a.abc.com
    JS小白,有人可以帮忙么?
    谢!~
    11 条回复    1970-01-01 08:00:00 +08:00
    leegorous
        1
    leegorous  
       2012-05-27 12:31:03 +08:00
    location.hostname
    ihciah
        2
    ihciah  
    OP
       2012-05-27 12:34:50 +08:00
    location.hostname 只能获取到 www.abc.com
    如何只取 abc.comabc.com 事先不知道),再加上"b."输出呢?
    zuroc
        3
    zuroc  
       2012-05-27 13:16:27 +08:00
    ttl
    zuroc
        4
    zuroc  
       2012-05-27 13:16:41 +08:00
    tld
    zuroc
        5
    zuroc  
       2012-05-27 13:16:57 +08:00
    ihciah
        6
    ihciah  
    OP
       2012-05-27 13:19:56 +08:00
    楼上的没看懂。。。
    Mutoo
        7
    Mutoo  
       2012-05-27 13:46:03 +08:00
    location.href.split('/')[2]
    jackmasa
        8
    jackmasa  
       2012-05-27 14:09:18 +08:00
    webkit不好办,其它浏览器可以用document.domain来区分域名和后缀
    Chris_Ys
        9
    Chris_Ys  
       2012-05-27 15:27:48 +08:00
    var prefix = location.host.slice(0, location.host.indexOf('.')) // prefix == "www"
    , domain = location.host.slice(location.host.indexOf('.')) // domain == ".v2ex.com"
    , new_url = "";

    switch (prefix) {
    case "www": new_url = "b" + domain; break;
    // ...
    }
    caomu
        10
    caomu  
       2012-05-27 15:50:35 +08:00
    LZ想要根域名(base domain / root domain),不要前面的二级、三级域名(如果有的话)……比较麻烦的是不知道顶级域有没有 .com.cn 这样子的。

    如果顶级域就是最后的 . 后面的部分,可以这样:

    function getsld(){
    var cURL="http://www.bb.example.com/pages/my.php";
    var array=cURL.split("/")[2].split(".");
    var sld=array[array.length-2]+"."+array[array.length-1]
    alert(sld);
    }

    OR

    var re=/.*\.(.*\..*)$/;
    sld=re.exec(window.parent.location.host)[1];

    (via http://www.sitepoint.com/forums/showthread.php?172110-seperating-the-domain-amp-tld-from-the-URL

    如果顶级域还像有 .com.hk 这样的,估计只能去匹配,用正则什么的:
    这里有个例子,测试成功 http://waiwaishu.blogspot.com/2012/03/javascripturlget-top-domain.html
    但是我还是考虑这TLD有没有列举完啊,不过我也想不到别的方法了,估计就是这样然后看看如果TLD没有补充完整就自己去补?
    然后去stackoverflow看到这个 http://publicsuffix.org/list/ 不过估计大部分是难得一见的。

    提供我查找时用过的关键词,看看别人能发现些什么:
    domain suffix / root domain / base domain / top domain
    ihciah
        11
    ihciah  
    OP
       2012-06-05 12:52:03 +08:00
    谢谢各位的帮忙,
    function init(){
    var hostname=window.location.hostname;
    document.getElementById('hostname').innerHTML='当前服务器为'+hostname.split('\.')[0];
    var link='b'+hostname.substring(hostname.indexOf('\.'),hostname.length-1);
    document.getElementById('link').innerHTML='<a href="'+link+'">'+link+'</a>';
    用这个实现了
    ^_^
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2637 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:46 · PVG 19:46 · LAX 03:46 · JFK 06:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.